Filename and line information
プリプロセッサにおける現在の行番号とファイル名を変更します。
目次 |
構文
#line
行番号
|
(1) | ||||||||
#line
行番号
"
ファイル名
"
|
(2) | ||||||||
説明
任意の前処理トークン(マクロ定数または式)は、有効な10進整数(オプションとして有効な文字列が続く場合もある)に展開される限り、 #line の引数として許可されます。
lineno
は少なくとも1つの10進数字の列でなければなりません(そうでない場合、プログラムは不適格です)。また、常に10進数として解釈されます(たとえ
0
で始まる場合でも)。
lineno
が
0
または
32767
(C99まで)
2147483647
(C99以降)
より大きい場合、動作は未定義です。
注記
このディレクティブは、別の言語で書かれたファイルからCソースファイルを生成する一部の自動コード生成ツールで使用されます。その場合、 #line ディレクティブが生成されたCファイルに挿入され、元の(人間が編集可能な)ソースファイルの行番号とファイル名を参照することがあります。
ディレクティブに続く行番号 #line __LINE__ は未規定です(この場合 __LINE__ が展開され得る値は2通りあります:これまでに読み取られた改行の数、またはこれまでに読み取られた改行の数に #line ディレクティブを終了する改行を加えた数)。これは DR 464 による結果であり、遡及適用されます。
例
#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.
参考文献
- C17規格 (ISO/IEC 9899:2018):
-
- 6.10.4 行制御 (p: 126)
-
- J.1 未規定動作
- 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 行制御
関連項目
|
C++ documentation
for
ファイル名と行情報
|