【发布时间】:2014-04-17 01:26:20
【问题描述】:
我无法让这个宏编译正确的代码。
代码如下:
以下是构建设置(我正在进行发布构建): 请注意,GCC 文档说 -Dname 将定义为 1,因此我省略了 Release 的“=1”:
这是编译日志,显示定义(黄色)是在命令行中传递的:
这是我的输出日志,显示代码已编译为好像未定义 ADD_CAMERA_FEATURE:
如果我将#define ADD_CAMERA_FEATURE 1 放入源中,#ifdef 会按预期工作,但我也会收到一条警告,提示我正在重新定义现有宏。所以 XCode 知道宏应该从构建方案设置中存在,但仍然不包括代码的#ifdef 分支。
其他细节:
- XCode 5.1
- OS X 10.9.2
- iOS 7.1
我的目标是有一个构建 iOS 7 版本应用程序的目标和一个构建 iOS 7 之前版本应用程序的目标,两者都来自同一个源。我必须支持一段时间内无法升级到 iOS 7 的旧设备。也许有更好的方法来解决这个问题。任何有关如何完成此任务的建议将不胜感激。
【问题讨论】:
-
你清理你的项目了吗?
-
刚刚尝试了清理和构建。结果相同。
-
编译日志显示您正在进行发布构建。请尝试相同的方法进行调试构建。它在那里正常工作吗? (我问是因为我无法在这里重现问题。)
-
方案设置?您确定吗?也许您的意思是配置、目标或项目?
-
@ChuckKrutsinger 你能通过预处理器运行那个文件吗?我可以从第一个屏幕截图中的语法着色中看到它认为它将运行第一个 NSLog。预处理器应该为我们确认。
标签: ios objective-c xcode macros