下面的代码产生输出“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