首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >XCode预处理宏#如果仍然包含与符号定义为0相反的代码

XCode预处理宏#如果仍然包含与符号定义为0相反的代码
EN

Stack Overflow用户
提问于 2015-08-23 20:00:04
回答 3查看 3.1K关注 0票数 3

我的XCODE项目中有一个名为LINPHONE_DEBUG的预处理宏。在我的构建设置中,我将宏设置为0,就像这样:LINPHONE_DEBUG=0

但不知怎么的,当我使用这个代码时:

代码语言:javascript
复制
#if LINPHONE_DEBUG
    foo()
#endif

foo()仍然被称为“见下面的屏幕截图”。

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

我正在运行XCODE 6.4 (6E35b)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-08-23 20:10:29

来自Swift iBook:使用Swift与Cocoa和Objective (Swift 2 Prerease)

“Swift编译器不包括预处理器。相反,它利用编译时属性、构建配置和语言特性来完成相同的功能。因此,未在Swift中导入预处理指令。“ “生成配置、Swift代码和Objective代码以不同的方式有条件地编译。Swift代码可以根据生成配置的评估有条件地编译。构建配置包括字面值true和false值、命令行标志以及下表中列出的平台测试功能。您可以使用-D <#flag#>指定命令行标志。“

有关生成配置的更多信息,请参见文档。

票数 6
EN

Stack Overflow用户

发布于 2015-08-23 20:12:36

更新:这一解决方案适用于目标c。

你应该这样做:

代码语言:javascript
复制
#if LINPHONE_DEBUG > 0
    foo()
#endif
票数 -1
EN

Stack Overflow用户

发布于 2015-09-02 04:18:21

通过将环境配置放入结构中,可以避免预处理器指令:

http://www.technoburgh.com/ios/swift-build-configuration/

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32170906

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档