Aracılığıyla paylaş


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

#line yönergesi, önişlemciye satır numarası ve dosya adı için derleyicinin bildirilen değerlerini belirli bir satır numarası ve dosya adı olarak ayarlamasını söyler.

Sözdizimi

#linedigit-sequence ["filename"]

Açıklamalar

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 giriş satırına başvurur ve dosya adı geçerli giriş dosyasına başvurur. Her satır işlendikten sonra satır numarası artırılır.

Basamak dizisi değeri, 0 ile 2147483647 (dahil) arasında herhangi bir tamsayı sabiti olabilir. Makro değiştirme ön işleme belirteçlerinde kullanılabilir, ancak sonucun doğru söz dizimini değerlendirmesi gerekir. Dosya adı herhangi bir karakter bileşimi olabilir ve çift tırnak işareti (" " içine alınmalıdır). Dosya adı atlanırsa, önceki dosya adı değişmeden kalır.

Bir yönerge yazarak #line kaynak satır numarasını ve dosya adını değiştirebilirsiniz. yönergesi #line , kaynak dosyada yönergesini izleyen satırın değerini ayarlar. Çeviri aracı, önceden tanımlanmış makroların __FILE__ ve değerlerini belirlemek için satır numarasını ve __LINE__dosya adını kullanır. Bu makroları, kendini açıklayıcı hata iletilerini program metnine eklemek için kullanabilirsiniz. Önceden tanımlanmış bu makrolar hakkında daha fazla bilgi için bkz . Önceden tanımlanmış makrolar.

Makro, __FILE__ içeriği dosya adı olan bir dizeye genişletilir ve çift tırnak işareti () içine alınır" ".

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. #line yönergesi genellikle program oluşturucuları tarafından kullanılır. Hata iletilerinin oluşturulan program yerine özgün kaynak dosyaya başvurmasına neden olmak için kullanılır.

Örnek

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

İlk örnekte, satır numarası 10, sonra 20 olarak ayarlanır ve dosya adı hello.cpp olarak değiştirilir.

// line_directive.cpp
// Compile by using: cl /W4 /EHsc line_directive.cpp
#include <stdio.h>

int main()
{
    printf( "This code is on line %d, in file %s\n", __LINE__, __FILE__ );
#line 10
    printf( "This code is on line %d, in file %s\n", __LINE__, __FILE__ );
#line 20 "hello.cpp"
    printf( "This code is on line %d, in file %s\n", __LINE__, __FILE__ );
    printf( "This code is on line %d, in file %s\n", __LINE__, __FILE__ );
}
This code is on line 7, in file line_directive.cpp
This code is on line 10, in file line_directive.cpp
This code is on line 20, in file hello.cpp
This code is on line 21, in file hello.cpp

Bu örnekte, makro ASSERT önceden tanımlanmış makroları __LINE__ kullanır ve __FILE__ belirli bir onay doğru değilse kaynak dosyayla ilgili bir hata iletisi yazdırır.

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

Ayrıca bkz.

Önişlemci yönergeleri