IPAD_BUILD や IPHONE_BUILD などのビルド設定でプリプロセッサ マクロを定義する方法 (およびファクトリ メソッドでそれらを使用する方法) は?
私は今これらを暗記して使用していますが、背後にあるものを知るのはクールです.
IPAD_BUILD や IPHONE_BUILD などのビルド設定でプリプロセッサ マクロを定義する方法 (およびファクトリ メソッドでそれらを使用する方法) は?
私は今これらを暗記して使用していますが、背後にあるものを知るのはクールです.
/#if 次の場合は通常どおり動作します。
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 30200
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
return YES;
}
#endif
return NO;
}
/#ifdef は、「定義されている場合 - いくつかの値またはマクロ」を意味します。
#ifdef RKL_APPEND_TO_ICU_FUNCTIONS
#define RKL_ICU_FUNCTION_APPEND(x) _RKL_CONCAT(x, RKL_APPEND_TO_ICU_FUNCTIONS)
#else // RKL_APPEND_TO_ICU_FUNCTIONS
#define RKL_ICU_FUNCTION_APPEND(x) x
#endif // RKL_APPEND_TO_ICU_FUNCTIONS
また:
#ifdef __OBJC__
#import <Foundation/Foundation.h>
#endif
詳細については、このリンクを使用してください http://www.techotopia.com/index.php/Using_Objective-C_Preprocessor_Directives
iPad を実行しているかどうかをテストするには、次のようにする必要があります。
#define USING_IPAD UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad
if (USING_IPAD) {
NSLog(@"running iPad");
}
別の便利なプリプロセッサ関数を次に示します。
#ifdef DEBUG
//here we run application through xcode (either simulator or device). You usually place some test code here (e.g. hardcoded login-passwords)
#else
//this is a real application downloaded from appStore
#endif
マクロは、未定義にすることも、値なしで定義することも、何らかの値 (場合によっては数値) で定義することもできます。例:
#undef MACRO
#define MACRO
#define MACRO ??????
#define MACRO 0
#define MACRO 1
#ifdef MACRO または #if defined (MACRO) は、値の有無にかかわらず、マクロが定義されているかどうかをチェックします。
#if MACRO はマクロ定義を置き換えます。マクロが定義されていない場合は、0 を代入します。次に、見つかった式を評価します。上記の 5 つの例を見ると、#if MACRO は次のようになります。
#if 0
#if
#if ??????
#if 0
#if 1
番号 2 と 3 は、コンパイル時エラーを示します。1 番と 4 番は false と評価されるため、次のコードはスキップされます。数値 5 は true と評価されます。
#if はより柔軟です: 次のように書くことができます
#if MACRO == 2
マクロがたとえば次のように定義されている場合にのみ、次のコードをコンパイルします
#define MACRO 2