#ifdef および #ifndef ディレクティブ
特定のプリプロセッサ定数またはマクロが定義されているかどうかを決定するプリプロセッサ ディレクティブ。
#ifdef識別子 ... |
---|
#endif |
#ifndef識別子 ... |
#endif |
パラメーター
Item | 説明 |
---|---|
識別子 |
チェックする定数またはマクロの識別子。 |
注釈
#ifを使用できる任意の場所で、#ifdefディレクティブと #ifndef ディレクティブを使用できます。 #ifdef ステートメントは、 ディレクティブと同じです。 これらのディレクティブチェック、C または C++ ソース コードで宣言された識別子ではなく、#define ディレクティブを使用して定義された識別子の有無に対してのみ使用されます。
これらのディレクティブは、言語の以前のバージョンとの互換性を維持するために用意されています。 #if ディレクティブで 定義 された演算子を使用することをお勧めします。
#ifndef ディレクティブは、#ifdef が調べる反対の条件を調べます。 識別子が定義されていない場合、条件は true (0 以外) です。それ以外の場合、条件は false (ゼロ) です。
例
identifier は /D オプションを使用してコマンド ラインから渡すことができます。 最大 30 個のマクロを /D に指定できます。 定義をコマンド ラインから渡すことができるため、定義の有無を調べるために便利です。 次の例では、この動作を使用して、テスト モードでアプリケーションを実行するかどうかを決定します。
// PROG.CPP
#ifndef test
#define final
#endif
int main()
{
}
次のコマンドを使用してコンパイルすると、prog.cpp はテスト モードでコンパイルされます。それ以外の場合は、最終モードでコンパイルされます。
CL.EXE /Dtest prog.cpp