#if、#elif

#if および #elif ディレクティブは、 constant_expression の値をゼロと比較します。

                                     .----------------.
                                     V                |
>>-#--+-if---+--constant_expression----token_sequence-+--------><
      '-elif-'
 
 

定数式の評価が非ゼロ値に評価される場合、 条件の直後にあるコードの行をコンパイラーに渡します。

式がゼロに評価され、条件付きコンパイル・ディレクティブが、 プリプロセッサー #elif ディレクティブを含んでいる場合、#elif および次の #elif またはプリプロセッサー #else ディレクティブとの間にあるソース・テキストが、プリプロセッサーによって選択され、コンパイラーに渡されます。 #elif ディレクティブをプリプロセッサー の #else ディレクティブの後ろに入れることはできません。

すべてのマクロが展開され、defined() の式はすべて処理され、 残りのすべての ID は、トークン 0 に置き換えられます。

テストされる constant_expression は、以下の属性を持つ整定数式でなければなりません。

注:
マクロが定義されていない場合、0 (ゼロ) の値がそれに代入されます。 以下の例では、TEST がマクロ ID であることが必要です。

#if TEST >= 1
   printf("i = %d¥n", i);
   printf("array[i] = %d¥n", array[i]);
#elif TEST < 0
   printf("array subscript out of bounds ¥n");
#endif
IBM Copyright 2003