#ifdef と #ifndef のディレクティブ (C/C++)
#ifdef と #ifndef のディレクティブは #if のディレクティブと 定義する (Identifier) で使用されると同じタスクを実行します。
#ifdef identifier
#ifndef identifier
// equivalent to
#if defined identifier
#if !defined identifier
解説
#ifdefディレクティブを使用 #ifndef の任意の場所 #if を使用できます。#ifdefID のステートメントは 識別子 を #undef のディレクティブで定義されていないまたは未定義には 識別子が 定義されている場合は#if 0 と同じです #if 1 と等価です。これらのディレクティブは C または C++ ソース・コード内で宣言されている識別子の #define と定義されている識別子の有無を持つかだけが検証されます。
これらのディレクティブは言語の以前のバージョンとの互換性のためだけに与えられます。#if のディレクティブで使用する 定義済み (ID) の定数式は優先されます。
#ifndef のディレクティブは #ifdef によってチェックするオブジェクトの条件をチェックします。識別子 (または定義が #undef を削除した場合) は定義されていない場合は条件が true になります (以外)。それ以外の場合は条件が false です (0)。
Microsoft 固有の仕様 →
識別子は /D オプションを使用してコマンド ラインから渡すことができます。30 個のマクロは /D で指定できます。
これは定義をコマンド ラインから渡すことができるため定義があるかどうかを確認する場合に便利です。次に例を示します。
// ifdef_ifndef.CPP
// compile with: /Dtest /c
#ifndef test
#define final
#endif
終了 Microsoft 固有の仕様→