【发布时间】:2013-02-15 17:00:23
【问题描述】:
问题
我只想在我的 TESTING 为 YES 时触发警告。这可能吗?我现在所拥有的不起作用。我该怎么办?
BOOL const TESTING = NO;
#if TESTING == YES
#warning don't forget to turn testing to NO before upload
#endif
回答
根据下面的答案,这对我有用:
#define _TESTING // COMMENT THIS OUT TO DISABLE TESTING MODE
#ifdef _TESTING
BOOL const TESTING = YES;
#warning don't forget to turn testing to NO for production
#else
BOOL const TESTING = NO;
#endif
【问题讨论】:
-
是的,程序名称空间和宏名称空间完全不同。将程序值 TESTING 设置为 NO 对宏变量 TESTING 的值没有影响(尽管宏变量的值被替换为另一个方向,在实际编译器甚至看到程序之前的文本替换传递中)。
-
@HotLicks:所以如果他在程序中使用他的
TESTINGbool 来表示,显示警报视图或其他内容,他仍然需要保留BOOL const TESTING = NO;以使程序代码识别它,对吗?所以他必须在发布时同时注释掉#define TESTING并设置BOOL const TESTING = NO,对吗? -
他不应该将他的BOOL变量命名为TESTING,否则宏阶段会将其替换为NO,导致一些神秘的编译错误。因此,宏变量始终使用全部大写,程序变量永远不要全部使用大写。但他可以通过 ifdefs 或其他技术让宏变量 TESTING 控制他的 Testing 变量的设置。
-
请注意,如上所述,使用全大写的程序变量名是个坏主意。
-
杰克逊,你的回答很完美。谢谢。
标签: objective-c xcode cocoa constants definition