◐ Shell
clean mode source ↗

ファイル名と行番号情報 - cppreference.com

提供: cppreference.com

プリプロセッサの現在のファイル名および行番号を変更します。

構文

#line lineno (1)
#line lineno "filename" (2)

説明

1) 現在のプリプロセッサの行番号を lineno に変更します。 この地点以降、マクロ __LINE__ の展開は lineno にその後遭遇した実際のソースコードの行数を加えたものに展開されます。

2) さらに現在のプリプロセッサのファイル名も filename に変更します。 この地点以降、マクロ __FILE__ の展開は filename を生成します。

任意のプリプロセッサトークン (マクロ定数または式) は、それらが有効な10進整数およびオプションでそれに続く有効な文字列に展開される限り、 #line への引数として認められます。

lineno は少なくとも1つの10進数字の並びでなければならず (そうでなければプログラムは ill-formed です)、常に (たとえ 0 で始まっていても) 10進数として解釈されます。

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.

関連項目