Aracılığıyla paylaş


#line Yönergesi (C/C++)

Bir #line yönergesi önişlemciye derleyicinin dahili depolanan satır numarasını ve dosya adını verilen satır numarasına ve dosya numarasına değiştirmesini söyler.

#line digit-sequence ["filename"]

Notlar

Derleyici derleme sırasında bulduğu hatalara başvurmak için satır numarası ve isteğe bağlı dosya adını kullanır.Satır numarası genellikle geçerli girdi satırına başvurur ve dosya adı geçerli girdi dosyasına başvurur.Her satır işlendikten sonra satır numarası artırılır.

Bir basamak dizisi değeri herhangi bir tamsayı sabiti olabilir.Makro değiştirme önişlem belirteçleri üzerinde gerçekleştirilebilir, ancak sonuç doğru sözdizimini değerlendirmelidir.Bir Dosya adı karakterlerin herhangi bir birleşiminden oluşabilir ve çift tırnak içine alınmalıdır ("").Eğer Dosya adı atlanırsa, önceki dosya değişmeden kalır.

Kaynak satır numarasını ve dosya adını #line yönergesini yazarak değiştirebilirsiniz.Önceden tanımlı makroları değerlerini belirlemek için çevirici dosya adı ve satır numarasını kullanır. Önceden tanımlı makroların değeri __FILE__ ve __SATIR__.Bu makroları kendini açıklayıcı hata iletilerini program metnine eklemek için kullanabilirsiniz.Bu önceden tanımlı makrolar hakkında daha fazla bilgi için bkz: Önceden Tanımlı Makrolar.

Bir __FILE__ makrosu içeriği çift tırnak işaretleri, dosya adı olan bir dizeye genişler ("").

Satır numarasını ve dosya adını değiştirirseniz, derleyici önceki değerleri yok sayar ve yeni değerleri işlemeye devam eder.Bir #line yönergesi genellikle program üretici tarafından hata iletilerinin oluşturulan program yerine özgün kaynak dosyaya başvurmasına neden olmak için kullanılır.

Aşağıdaki örneklerde #line ve __LINE__ ve __FILE__ makroları gösterilmektedir.

Bu ifadede,dahili depolanan satır numarası 151 olarak ayarlanır ve dosya adı copy.colarak değiştirilir.

#line 151 "copy.c"

Bu örnekte, makro ASSERT önceden tanımlı __LINE__ ve __FILE__ makrolarını verilen "onaylama" doğru değilse, kaynak dosyası ile ilgili bir hata iletisi yazdırmak için kullanır.

#define ASSERT(cond)

if( !(cond) )\
{printf( "assertion error line %d, file(%s)\n", \
__LINE__, __FILE__ );}

Ayrıca bkz.

Başvuru

Ön işlemci Yönergeleri