【发布时间】:2015-01-07 07:48:27
【问题描述】:
在 Xcode 6.1.1 (Obj-C) 中
#if 1
NSLog(@"print 1");
#endif
#if TRUE
NSLog(@"print TRUE");
#endif
#if YES
NSLog(@"print YES");
#endif
结果:
print 1
print TRUE
可以向我解释一下结果吗?为什么#if TRUE vs #if YES vs #if 1 不一样?
【问题讨论】:
-
提示:(
1,TRUE) 和YES有什么区别? -
因为这些是预处理器命令而不是objective-c,它不像objective-c那样使用YES,它试图像我认为未定义的变量一样使用YES
-
@SouravGhosh:TRUE/FALSE 是无符号字符,YES/NO 是有符号字符。但是为什么他们在这种情况下会有所不同呢?
-
哦不,我又被误解了。我试图指出的是你应该专注于 pre-processing 状态。在那里,
1和TRUE已定义 [或已知] 具有non-zero值,YES尚未定义。
标签: objective-c c-preprocessor