January 8, 2011

Xcodeのプリプロセッサマクロ

「ある条件下では特定のコード群は処理に加わらせない」といった場合、方法の1つとしてプリプロセッサにマクロを指定するやり方が挙げられます。

Xcodeで行う場合、プロジェクト設定にある項目「プリプロセッサマクロ」で指定します。(実際に探す際は、同ウィンドウ内にある検索バーに「プリプロセス」などと入れて検索することをお勧めします。)

Xcodeメニューのプロジェクト > プロジェクト設定を変更 > GCC 4.2 - プリプロセスのプリプロセッサマクロ

[caption id="attachment_3775" align="aligncenter" width="464" caption="GCC 4.2 - プリプロセス"][caption]

プロジェクトの項目「プリプロセッサマクロ」を設定

例えば、下のコードのようにDebugしているときにNSLogを出力するマクロ"DEBUG" があるとき、ビルド構成Debugのプリプロセッサマクロに DEBUG = 1 と入力します。(上図参照)

#ifdef DEBUG  NSLog(@"ビルド構成:デバッグ");#endif

以上で設定は完了です。

サンプルコードとその結果

以下のコードは、上述した内容でプリプロセッサマクロが動作しているのか確認するために用意した簡易的なものです。

#import <Foundation/Foundation.h>int main (int argc, const char * argv[]) {  NSAutoreleasePool * pool = NSAutoreleasePool alloc;#ifdef DEBUG  NSLog(@"ビルド構成:デバッグ");  NSLog(@"%d 行目",__LINE__);			 / 行数を表示  NSLog(@"%s メソッド",__FUNCTION__);		// メソッド名を表示  NSLog(@"%s に記述あり",__FILE__);		 // ファイル名(フルパス)を表示#else if	NSLog(@"ビルド構成:リリース");#endif  [pool drain];  return 0;}
  • ビルド構成をDebugにしたときのコンソールの出力結果
  • ビルド構成:デバッグ13 行目main メソッド/Users/hiroaki/develop/Macro/Macro.m に記述あり
  • ビルド構成をReleaseにしたときのコンソールの出力結果
  • ビルド構成:リリース