#line ディレクティブ (DirectX HLSL)
コンパイラの内部に保管された行番号とファイル名を、指定された値に設定するためのプリプロセッサ ディレクティブです。
#line lineNumber "filename" |
---|
パラメーター
- lineNumber
設定する行番号です。これには任意の整数定数を指定できます。マクロ置換の結果が正しい構文になる場合は、プリプロセス トークンに対してマクロ置換を実行できます。 - filename [省略可能]
設定するファイル名です。このファイル名は、任意の文字列で構成でき、二重引用符 (" ") で囲む必要があります。このパラメーターを省略した場合は、元のファイル名は変更されません。
解説
コンパイラは、行番号とファイル名を使用して、コンパイル時に検出したエラーを示します。行番号は通常は現在の入力行を示し、ファイル名は現在の入力ファイルを示します。各行が処理されるたびに、行番号は大きくなります。行番号とファイル名を変更した場合は、コンパイラは変更前の値を無視して、新しい値を使用して処理を続行します。#line ディレクティブは通常、プログラム ジェネレーターがエラー メッセージで指す場所を、生成したプログラムではなく元のソース ファイルとするために使用します。
トランスレーターは、行番号とファイル名を使用して、__FILE__ および __LINE__ という定義済みマクロの値を特定します。これらのマクロを使用して、説明付きのエラー メッセージをプログラム テキストに挿入できます。__FILE__ マクロは、二重引用符 (" ") で囲まれたファイル名から成る文字列に展開されます。
例
次の例は、行番号を 151 に設定して、ファイル名を "copy.c" に設定します。
#line 151 "copy.c"
次の例で、マクロ ASSERT は、定義済みマクロ __LINE__ および __FILE__ を使用して、指定されたアサーションが true でない場合にソース ファイルに関するエラー メッセージを出力します。
#define ASSERT(cond) if( !(cond) )¥ {printf( "assertion error line %d, file(%s)¥n", ¥ __LINE__, __FILE__ );}