1

我刚刚在 Xcode 4.3.3 上创建了一个新的可可项目。Apple LLVM 编译器 3.1 设置的预处理器宏分配了一个 DEBUG=1 $(inherited) 值。我删除它并再次添加它,现在编译时出现错误:

clang:错误:没有这样的文件或目录:'DEBUG=1'

我在项目设置中搜索该值,发现该值也在“其他警告标志”中定义

我的问题是:

  1. 只拥有DEBUGvs 和有什么不一样DEBUG=1
  2. 做什么$(inherited)
  3. 它还在其他警告标志上做什么?
4

1 回答 1

1

首先,如果您遇到编译错误,那么您很可能将宏放回项目设置中的错误位置。请确保您已将其放入该部分下的项目的Debug配置分支中。Preprocessor MacrosApple LLVM compiler x.x - Preprocessing

对于您的其他问题:

  1. 第一个版本只是定义了宏DEBUG,所以它基本上是空的。你可以测试它是否存在,但不多。第二个将其设置为,1以便预处理器实际上可以进行比较,例如#if DEBUG && SHOULD_DIE_ON_ERROR如果应用程序遇到一些验证错误,您可能会在哪里中止,但前提SHOULD_DIE_ON_ERROR是设置1了并且您正在调试模式下运行。
  2. 只是引入了您从更上层继承的$(inherited)其他宏。因此,如果您的项目定义了一些项目,而您的目标定义了更多项目,则目标也可以获取项目的设置,而无需重新定义它们。
  3. 它根本不应该影响警告标志。如果有的话,它会确定您包含的头文件中的代码路径(例如可可框架),这些路径可能使用不同的实现,或者可能将调试信息添加到数据结构或其他任何东西。
于 2012-07-06T23:45:22.637 回答