?
This document uses PHP Chinese website manual Release
更改預(yù)處理器中的當前行號和文件名。
#line lineno | (1) | |
---|---|---|
#line lineno "filename" | (2) |
1)將當前預(yù)處理器行號更改為 lineno。__LINE__
超出這一點的宏的出現(xiàn)將擴展到 lineno 加上自此之后遇到的實際源代碼行的數(shù)量。
2)還將當前的預(yù)處理器文件名更改為文件名。__FILE__
超出這一點的宏的出現(xiàn)將產(chǎn)生文件名。
任何預(yù)處理標記(宏常量或表達式)都可以作為參數(shù),#line
只要它們擴展為有效的十進制整數(shù)(可選地跟在有效的字符串之后)。
該指令被一些自動代碼生成工具所使用,該工具從用另一種語言編寫的文件中生成 C ++源文件。在這種情況下,#line
可以在生成的 C ++文件引用行號和原始(可編輯的)源文件的文件名中插入指令。
指令后面的行號#line __LINE__
是實現(xiàn)定義的(在這種情況下,有__LINE__可擴展到的兩個可能值:迄今為止看到的末尾行數(shù),或迄今為止看到的末尾行數(shù)加上結(jié)束#line指令的末尾行)。
#include <assert.h>#define FNAME "test.c"int main(void){#line 777 FNAME assert(2+2 == 5);}
可能的輸出:
test: test.c:777: int main(): Assertion `2+2 == 5' failed.
C11標準(ISO / IEC 9899:2011):
6.10.4線路控制(p:173)
C99標準(ISO / IEC 9899:1999):
6.10.4線路控制(p:158)
C89 / C90標準(ISO / IEC 9899:1990):
3.8.4線路控制