#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;