问题描述
如您所见,在我的Active compilation conditions
中,我有2个flags(or whatever it is called)
, A 和 B 。
我有2个目标,因此第一个目标具有标志A,第二个目标具有标志B ...
在代码中,我试图根据所选的应用程序目标来定义一个值,但是问题是它永远不会进入#if
块,而永远不会进入#else
块。
我已经尝试解决了几个小时,但没有任何帮助。我还尝试将-D
放入我的标志名,并尝试在A
中定义B
和Other Swift Flags
...
什么都没有。
这是我的简单代码:
#if A
#define kId @"a1a2a3" //never executed.
#else
#define kId @"b1b2b3" //always executed. Weird thing is also that I put a breakpoint here but its never catched...
#endif
解决方法
主动编译条件适用于Swift,类似于Objective-C / C / C ++中的预处理器宏。
在基于C的语言中,以#
开头的行是预处理器指令。
由于使用的是Objective-C,因此要在代码中使用#if
,A
的值应为非零。如果只想测试是否定义了A
,则可以改用#ifdef
。在A=1
下的Preprocessor Macros
中定义Apple Clang - Preprocessing
。