我的XCODE项目中有一个名为LINPHONE_DEBUG的预处理宏。在我的构建设置中,我将宏设置为0,就像这样:LINPHONE_DEBUG=0。
但不知怎么的,当我使用这个代码时:
#if LINPHONE_DEBUG
foo()
#endiffoo()仍然被称为“见下面的屏幕截图”。

您可以看到,我打印了po LINPHONE_DEBUG,它是0,但它仍然到达了代码。
我正在运行XCODE 6.4 (6E35b)。
发布于 2015-08-23 20:10:29
来自Swift iBook:使用Swift与Cocoa和Objective (Swift 2 Prerease)
“Swift编译器不包括预处理器。相反,它利用编译时属性、构建配置和语言特性来完成相同的功能。因此,未在Swift中导入预处理指令。“ “生成配置、Swift代码和Objective代码以不同的方式有条件地编译。Swift代码可以根据生成配置的评估有条件地编译。构建配置包括字面值true和false值、命令行标志以及下表中列出的平台测试功能。您可以使用-D <#flag#>指定命令行标志。“
有关生成配置的更多信息,请参见文档。
发布于 2015-08-23 20:12:36
更新:这一解决方案适用于目标c。
你应该这样做:
#if LINPHONE_DEBUG > 0
foo()
#endif发布于 2015-09-02 04:18:21
通过将环境配置放入结构中,可以避免预处理器指令:
http://www.technoburgh.com/ios/swift-build-configuration/
https://stackoverflow.com/questions/32170906
复制相似问题