ファイル名と行の情報
From cppreference.com
プリプロセッサにおけるソースコードの行番号、およびオプションで現在のファイル名を変更します。
目次 |
[編集] 構文
#line lineno |
(1) | ||||||||
#line lineno "filename" |
(2) | ||||||||
[編集] 解説
1) 現在のプリプロセッサの行番号を lineno に変更します。これ以降のマクロ __LINE__ の展開は、lineno に、それ以降に出現した実際のソースコードの行数を加えたものに展開されます。
2) 現在のプリプロセッサのファイル名も filename に変更します。これ以降のマクロ __FILE__ の展開は filename を生成します。
#line の引数には、有効な十進整数とそれに続くオプションで有効な文字列に展開される限り、任意のプリプロセッシングトークン(マクロ定数または式)が許可されます。
lineno は少なくとも1つの十進数字の並びでなければなりません(そうでなければプログラムはill-formedです)し、常に十進数として解釈されます(`0`で始まっていても)。
lineno が `0` または `32767`(C++11まで)`2147483647`(C++11以降) より大きい場合、動作は未定義です。
[編集] 注釈
このディレクティブは、他の言語で書かれたファイルからC++ソースファイルを生成する一部の自動コード生成ツールによって使用されます。その場合、生成されたC++ファイルには、元の(人間が編集可能な)ソースファイルの行番号とファイル名を参照する#lineディレクティブが挿入されることがあります。
[編集] 例
このコードを実行
#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 standard (ISO/IEC 14882:2020)
- 15.7 行制御 [cpp.line]
- C++17 standard (ISO/IEC 14882:2017)
- 19.4 行制御 [cpp.line]
- C++14 standard (ISO/IEC 14882:2014)
- 16.4 行制御 [cpp.line]
- C++11 standard (ISO/IEC 14882:2011)
- 16.4 行制御 [cpp.line]
- C++98 標準 (ISO/IEC 14882:1998)
- 16.4 行制御 [cpp.line]
[編集] 関連項目
| (C++20) |
ファイル名、行番号、関数名などのソースコードに関する情報を表すクラス (クラス) |
| ファイル名と行の情報に関するCドキュメント
| |