次の方法で共有


#define ディレクティブ (定数)

アプリケーションの定数にわかりやすい名前を割り当てるプリプロセッサ ディレクティブ。

#define identifiertoken-string

パラメーター

項目 説明
識別子
定数の識別子。
token-string [省略可能]
定数の値。 このパラメーターは、キーワード、定数、完全なステートメントなどの一連のトークンで構成されます。 1 つ以上の空白文字は、このパラメーターを identifier パラメーターから分離する必要があります。この空白は、置換されたテキストの一部とは見なされず、テキストの最後のトークンの後の空白も含まれません。
このパラメーターを除外すると、 identifier パラメーターのすべてのインスタンスがソース ファイルから削除されます。 識別子は定義されたままであり、定義された #if、#ifdef、および #ifndef ディレクティブを使用してテストできます。

解説

ソース ファイルの #define ディレクティブの後に発生するすべての識別子パラメーターのインスタンスは、token-string パラメーターの値に置き換えられます。 識別子は、トークンを形成する場合にのみ置き換えられます。たとえば、コメント内、文字列内、またはより長い識別子の一部として表示される場合、識別子は置き換えられません。

#undef ディレクティブは、識別子の定義を忘れないようにプリプロセッサに指示します。詳細については、「#undef ディレクティブ (DirectX HLSL)」を参照してください。

/D コンパイラ オプションを使用して定数を定義すると、ファイルの先頭で #define ディレクティブを使用する場合と同じ効果があります。 /D オプションを使用して、最大 30 個の定数を定義できます。 これを使用する方法の例については、 #ifdef と ) の「例」セクションを参照してください。

次の例では、識別子 WIDTH を整数定数 80 として定義し、WIDTH と整数定数 10 の観点から LENGTH を定義します。

#define WIDTH       80
#define LENGTH      ( WIDTH + 10 )

LENGTH の後続のすべてのインスタンスは (WIDTH + 10) に置き換えられ、WIDTH + 10 の後続のすべてのインスタンスは式 (80 + 10) に置き換えられます。 WIDTH + 10 の周りのかっこは、次のようなステートメントの解釈を制御するため、重要です。

var = LENGTH * 20;

前処理ステージの後、ステートメントは次のようになります。これは 1,800 と評価されます。

var = ( 80 + 10 ) * 20;

かっこを使用しない場合、結果は次のようになります。これは 280 と評価されます。

var = 80 + 10 * 20;

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

#define オーバーロード

#undef ディレクティブ (DirectX HLSL)