Share via


#ifdef および #ifndef ディレクティブ (DirectX HLSL)

特定のプリプロセッサ定数またはマクロが定義されているかどうかを確認するプリプロセッサ ディレクティブです。

#ifdef identifier ...
#endif
#ifndef identifier ...
#endif

パラメーター

  • identifier
    確認する定数またはマクロの識別子です。

解説

#if を使用できる場所であればどこでも、#ifdef ディレクティブおよび #ifndef ディレクティブを使用できます。#ifdef ステートメントは、識別子が定義されている場合は #if 1 と同じ意味を持ち、識別子が定義されていないか #undef ディレクティブを使用して定義解除されている場合は、#if 0 と同じ意味を持ちます。これらのディレクティブは、#define ディレクティブを使用して定義された識別子の有無のみを確認し、C または C++ のソース コードで宣言された識別子の有無は確認しません。

これらのディレクティブは、旧バージョンの言語との互換性を維持するためにだけ用意されています。defined 演算子を #if ディレクティブと組み合わせて使用することをお勧めします。

#ifndef ディレクティブは、#ifdef によって確認される条件とは逆の条件を確認します。この条件は、識別子が定義されていない場合は true (ゼロ以外) であり、定義されている場合は false (ゼロ) です。

識別子は、/D オプションを使用してコマンド ラインから渡すことができます。/D を使用して最大で 30 個のマクロを指定できます。コマンド ラインから定義を渡すことができるため、この指定機能は特定の定義が存在しているかどうかを確認するのに便利です。次の例では、この動作を使用して、アプリケーションをテスト モードで実行するかどうかを決定しています。

// PROG.CPP #ifndef test   #define final #endif int main() { }

次のコマンドを使用してコンパイルした場合は、prog.cpp はテスト モードでコンパイルされ、そうでない場合は、prog.cpp は最終モードでコンパイルされます。

CL.EXE /Dtest prog.cpp

関連項目

プリプロセッサ ディレクティブ (DirectX HLSL), #if、#elif、#else、および #endif ディレクティブ (DirectX HLSL)