Filename and line information
プリプロセッサにおいて、ソースコードの行番号と、オプションで現在のファイル名を変更します。
目次 |
構文
#line
行番号
|
(1) | ||||||||
#line
行番号
"
ファイル名
"
|
(2) | ||||||||
説明
1) 現在のプリプロセッサ行番号を lineno に変更します。この時点以降の __LINE__ マクロの展開は、 lineno に実際のソースコード行数を加えた値に展開されます。
2) また、現在のプリプロセッサファイル名を filename に変更します。この時点からの __FILE__ マクロの展開は filename を生成します。
任意の前処理トークン(マクロ定数または式)は、有効な10進整数とそれに続く任意の有効な文字列に展開される限り、 #line の引数として許可されます。
lineno
は少なくとも1つの10進数字からなるシーケンスでなければなりません(そうでない場合、プログラムは不適格です)。常に10進数として解釈されます(たとえ
0
で始まる場合でも)。
lineno
が
0
または
32767
(C++11以前)
2147483647
(C++11以降)
より大きい場合、動作は未定義です。
注記
このディレクティブは、他の言語で書かれたファイルからC++ソースファイルを生成する一部の自動コード生成ツールによって使用されます。その場合、 #line ディレクティブが、元の(人間が編集可能な)ソースファイルの行番号とファイル名を参照する形で、生成されたC++ファイルに挿入されることがあります。
例
#include <cassert> #define FNAME "test.cc" int main() { #line 777 FNAME assert(2+2 == 5); }
出力例:
test: test.cc:777: int main(): Assertion `2+2 == 5' failed.
参考文献
- C++23規格 (ISO/IEC 14882:2024):
-
- 15.7 行制御 [cpp.line]
- C++20 標準 (ISO/IEC 14882:2020):
-
- 15.7 行制御 [cpp.line]
- C++17 標準 (ISO/IEC 14882:2017):
-
- 19.4 行制御 [cpp.line]
- C++14 標準 (ISO/IEC 14882:2014):
-
- 16.4 行制御 [cpp.line]
- C++11標準 (ISO/IEC 14882:2011):
-
- 16.4 行制御 [cpp.line]
- C++98標準 (ISO/IEC 14882:1998):
-
- 16.4 行制御 [cpp.line]
関連項目
|
(C++20)
|
ファイル名、行番号、関数名などのソースコード情報を表すクラス
(クラス) |
|
Cドキュメント
for
ファイル名と行情報
|
|