条件付き取り込み
条件付き取り込みとは、ソースファイルの一部分を条件によって処理したり読み飛ばしたりする前処理指令のことです。
#if文の利用
#if, #elif, #else は、それぞれ制御文のif, else if, elseと同様の使い方をします。
すなわち、定数式1が真(0以外)の場合グループ1が実行され、 それ以外の場合で定数式2が真(0以外)の
場合グループ2が実行され、 さらにそれ以外の場合グループ3が実行されます。
#if文 構文
#if 定数式1 グループ1 #elif 定数式2 グループ2 #else グループ3 #endif
定数式ではdefined単項演算子式を指定することもできます。
defined単項演算子は、 識別子がその時点でマクロ名として定義している場合 1 (真)と評価し、
そうでない場合 0 (否)と評価します。
#if defined単項演算子 構文
#if defined 識別子 #if defined (識別子)
defined単項演算子式を否定で指定する場合、否定の論理演算子(「!」)を指定します。
#if !defined単項演算子 構文
#if !defined 識別子 #if !defined (識別子)
#ifdef文の利用
#ifdefは、 識別子がその時点でマクロ名として定義している場合 1 (真)と評価し、
そうでない場合 0 (否)と評価します。
これは「#if defined 識別子」と等価となります。
#ifndef文 構文
#ifndef 識別子 グループ #endif
#ifndef文の利用
#ifndefは、 識別子がその時点でマクロ名として定義している場合 0 (否)と評価し、
そうでない場合 1 (真)と評価します。
これは「#if !defined 識別子」と等価となります。
#ifndef文 構文
#ifndef 識別子 グループ #endif