2015-08-23 118 views
3

嗨,大家好,我觉得自己像一个白痴问这个问题,但我无法帮助我的自我,因为我真的认为我正在做的事情corectlly。XCode预处理器宏#if不工作

所以我预处理器宏,我叫我的构建设置LINPHONE_DEBUG Xcode项目我已经宏设置为0正是这样:LINPHONE_DEBUG=0

但不知何故,当我使用此代码:

#if LINPHONE_DEBUG 
    foo() 
#endif 

foo()仍然被称为下面的截图。

enter image description here

你可以看到我打印po LINPHONE_DEBUG,这是0但它仍然达到了代码...

我正在XCODE 6.4 (6E35b)

感谢提前的帮助。

回答

5

从夫特的iBook:使用夫特与可可和Objective-C(SWIFT 2 Prerease)

“的编译器夫特不包括预处理器。相反,它利用编译时属性,构建配置和语言功能来实现相同的功能。因此,在Swift中不会导入预处理器指令。“

”构建配置 Swift代码和Objective-C代码是以不同方式进行有条件编译的。 Swift代码可以根据构建配置的评估条件进行编译。构建配置包括下表中列出的文字真假值,命令行标志和平台测试功能。您可以使用-D <#flag#>指定命令行标志。“

有关构建配置的更多信息,请参阅文档。

+0

谢谢你,先生......对不起 –

-1

更新:此解决方案在目标c中工作。

你应该尝试这样的:

#if LINPHONE_DEBUG > 0 
    foo() 
#endif 
+0

我没” t注意到这个问题是关于快速的。它的目标是c。 – hsafarya

+0

那么我发布的作品也在Objective-C中工作......所以这个答案是完全废话 –