以下のコードは、「定義済み」、「定義なし」、および「はい」という出力を生成します。なんで?
#define FOOBAR NO
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
#ifdef YES
NSLog(@"yes defined");
#endif
#ifdef NO
NSLog(@"no defined");
#endif
#if FOOBAR == YES
NSLog(@"yes");
#else
NSLog(@"no");
#endif
// ...
}
YES と NO は未定義ではなく、objc.h では次のように定義されています。
typedef signed char BOOL;
#define YES (BOOL)1
#define NO (BOOL)0