Objective c 常量的条件编译警告 问题:

Objective c 常量的条件编译警告 问题:,objective-c,xcode,cocoa,constants,definition,Objective C,Xcode,Cocoa,Constants,Definition,我想触发一个警告,只有当我的测试是肯定的。这可能吗?我现在拥有的东西不起作用。我该怎么办 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

我想触发一个警告,只有当我的测试是肯定的。这可能吗?我现在拥有的东西不起作用。我该怎么办

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

试着用新的替换现有的

#ifdef TESTING
  #warning //... warning here
  BOOL const testingBool = YES;
#else
  BOOL const testingBool = NO;
#endif

然后,您需要将测试作为“预处理器宏”添加到目标的构建设置中(有关如何执行的详细信息,请参见问题)。

是的,程序和宏的名称空间完全不同。将程序值测试设置为“否”对宏变量测试的值没有影响(尽管宏变量的值在另一个方向被替换,在实际编译器看到程序之前的文本替换过程中)。@HotLicks:因此,如果他在程序中使用他的
测试
bool来表示,显示一个警报视图或什么的,他仍然需要保持
boolconst TESTING=NO使程序代码识别它,对吗?因此,当他发布时,他必须注释掉
#define TESTING
,并设置
BOOL const TESTING=NO
,对吗?他不应该命名他的BOOL变量TESTING,否则宏阶段会将其替换为NO,导致一些神秘的编译错误。因此,宏变量始终使用所有大写字母,程序变量永远不要使用所有大写字母。但是他可以让宏变量测试控制他的测试变量的设置,使用ifdef或其他技术。注意,如上所述,使用全大写的程序变量名是个坏主意。你的答案很完美,Jackson。谢谢。更好的做法是,在生成配置中定义
测试
,这样它就可以是全局的并且很容易更改。@特洛伊敌人:谢谢你的建议,编辑了答案(带有描述如何设置的链接)。