?
本文檔使用 PHP中文網(wǎng)手冊 發(fā)布
更改預(yù)處理器中的當(dāng)前行號和文件名。
#line lineno | (1) | |
---|---|---|
#line lineno "filename" | (2) |
1)將當(dāng)前預(yù)處理器行號更改為 lineno。__LINE__
超出這一點(diǎn)的宏的出現(xiàn)將擴(kuò)展到 lineno 加上自此之后遇到的實(shí)際源代碼行的數(shù)量。
2)還將當(dāng)前的預(yù)處理器文件名更改為文件名。__FILE__
超出這一點(diǎn)的宏的出現(xiàn)將產(chǎn)生文件名。
任何預(yù)處理標(biāo)記(宏常量或表達(dá)式)都可以作為參數(shù),#line
只要它們擴(kuò)展為有效的十進(jìn)制整數(shù)(可選地跟在有效的字符串之后)。
該指令被一些自動代碼生成工具所使用,該工具從用另一種語言編寫的文件中生成 C ++源文件。在這種情況下,#line
可以在生成的 C ++文件引用行號和原始(可編輯的)源文件的文件名中插入指令。
指令后面的行號#line __LINE__
是實(shí)現(xiàn)定義的(在這種情況下,有__LINE__可擴(kuò)展到的兩個(gè)可能值:迄今為止看到的末尾行數(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標(biāo)準(zhǔn)(ISO / IEC 9899:2011):
6.10.4線路控制(p:173)
C99標(biāo)準(zhǔn)(ISO / IEC 9899:1999):
6.10.4線路控制(p:158)
C89 / C90標(biāo)準(zhǔn)(ISO / IEC 9899:1990):
3.8.4線路控制