#ifdef と #ifndef
条件コンパイルの概要:インデックス への移動
構文
#ifdef identifier #ifndef identifier
説明
#ifdef 指令と #ifndef 指令は、defined (identifier) 演算子の付いた下記の #if 指令と同じです。
#if defined identifier #if !defined identifier
#ifdef 指令と #ifndef 指令を #if defined identifier
式の代わりに使用することができます。 ただし、#if defined identifier
式の方が望ましいでしょう。 #ifdef 指令と #ifndef 指令は、C++ 言語の旧バージョンとの互換性を保つためにのみ用意されています。
条件指令 #ifdef および #ifndef を使用すると、識別子が現在定義されているかどうかを検査できます。 つまり、その識別子の #define コマンドが前に処理されていて、その定義がまだ有効かどうかがわかります。 以下の
#ifdef identifier
は、identifier
が現在定義されている場合は
#if 1
とちょうど同じ効果があり、identifier
が現在定義されていない場合は
#if 0
と同じ効果があります。
#ifndef は identifier
が "定義されていない" 場合に "真" に評価されるため、以下の
#ifndef identifier
は、identifier
が現在定義されている場合は
#if 0
とちょうど同じ効果があり、identifier
が現在定義されていない場合は
#if 1
と同じ効果があります。
その後の構文は、#if、#elif、#else、#endif の構文に従います。
NULL と定義された識別子は、定義されていると見なされます。