#line ディレクティブ

コンパイラの内部に格納されている行番号とファイル名を指定した値に設定するプリプロセッサ ディレクティブ。

lineNumber "filename" を#lineする

パラメーター

項目 説明
lineNumber
設定する行番号。 任意の整数定数を指定できます。 マクロの置換は、結果が正しい構文に評価される限り、前処理トークンに対して実行できます。
filename [省略可能]
設定するファイル名。 ファイル名は任意の文字の組み合わせで指定でき、二重引用符 (" ") で囲む必要があります。 このパラメーターを省略すると、前のファイル名は変更されません。

解説

コンパイラは、行番号とファイル名を使用して、コンパイル中に検出されたエラーを参照します。 通常、行番号は現在の入力行を参照し、ファイル名は現在の入力ファイルを参照します。 行番号は、各行が処理された後、インクリメントします。 行番号とファイル名を変更すると、コンパイラでは以前の値が無視され、新しい値で処理が続行されます。 通常、#line ディレクティブは、エラー メッセージが生成されたプログラムではなく元のソース ファイルを参照するようにプログラム ジェネレーターによって使用されます。

トランスレーターは定義済みマクロ __FILE__ と __LINE__ の値の決定に行番号とファイル名を使用します。 これらのマクロを使用して、説明的なエラー メッセージをプログラム テキストに挿入できます。 __FILE__ マクロは、二重引用符 (" ") で囲まれた、内容がファイル名である文字列に展開されます。

次の例では、行番号を 151 に設定し、ファイル名を "copy.c" に設定します。

#line 151 "copy.c"

次の例では、マクロ ASSERT は定義済みのマクロ __LINE__を使用し、指定したアサーションが true でない場合にソース ファイルに関するエラー メッセージを出力__FILE__。

#define ASSERT(cond)

if( !(cond) )\
{printf( "assertion error line %d, file(%s)\n", \
__LINE__, __FILE__ );}

関連項目

プリプロセッサ ディレクティブ (DirectX HLSL)