条件付きコンパイル プリプロセッサディレクティブ

プリプロセッサディレクティブは、プログラムの一部を条件によって選択してコンパイルする命令です。

条件付きプリプロセッサ

条件付きコンパイルは、ifステートメント同様に 指定された定数式が真であれば、指定範囲をコンパイルします

常数式での評価

以下の例の場合、マクロがDEBUG常数を評価します。 #define で DEBUG 定数を 1 と定義しておけば、True として処理します。 また、#else も使用できます。

定数式

# define 定数名 1

コード内

#if 定数名

   コードA

#else

   コードB

#endif

定数名での評価

マクロ名が定義されているか否かでコンパイルを分岐させる 以下の例は#defineで定数名が宣言されていれば、Trueとして評価します

定数名前宣言

# define 定数名

コード内

#ifdef 定数名

   コードA

#else

   コードB

#endif

また、定数が宣言されていなければTrueになってコンパイルさせる定義があります。

コード内

#ifndef 定数名

   コードA

#endif

この #ifndef を利用した場合、#define 定数名 が宣言されていなければ、通常通り コードがコンパイルされ、宣言されていれば、コードはスキップされます。

ビルドセッティング関連

Target 別に buildsetting で #define を宣言する

XCodeの target 別に #define を宣言することができます。

まず Target を複製などして、特別な #define を持たせるターゲットを作ります。(普通な Targetでも、ちろんOK)

プロジェクトのトップ画面で、設定したターゲットを選択し、Build Settings > Apple LLVM compiler 3.0 - Preprocessing > Preprocessor Macros に#defineで宣言させた定数名を登録する。

_images/Buildsetting_DEBUG01.png

上の画面は Target名 driverMusic_no2window に対して #define DISABLE_2ND_WINDOW を追加した所です。