下面的代碼產生輸出「yes defined」,「no defined」和「yes」。爲什麼?預處理器宏和BOOL奇怪
#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
編譯器bug ...? – 2012-10-04 10:09:24