#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__ );}

関連項目

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