ios – Xcode 7.3:在前缀文件中重新定义宏时“宏的扩展”

我正在使用 Xcode 7.3,我得到了一个“Ambiguous expansion of macro”警告,对于一个在Foundation中定义的宏,但我在我的前缀文件中未定义和重新定义.我启用了模块.

重现:

>在构建设置中将“启用模块(C和Objective-C)”设置为“是”
>使用以下前缀文件:

#import <Foundation/Foundation.h>  

#undef assert  
#define assert(e)  NSLog(@"hi") // implementation is not important

>使用以下主要源文件:

int main() {  
  assert(42);  
  return 0;  
}

>然后在Xcode中构建.
>它显示了在源文件中使用“断言”宏的行上的“宏的扩展’断言’”警告. “扩展’assert’的定义”指向系统标题中的定义,而不是我的重新定义. “断言’的其他定义”指向我的前缀文件中的定义.

禁用模块时不会发生此警告.

解决方法

这是Xcode中的一个错误;如果您可以在 https://bugreport.apple.com提交错误报告并在此处留下错误#,我们将不胜感激.您在此期间解决此错误的选项包括:

>对于此宏,您可以使用与“断言”不同的名称.>您可以将GCC_PRECOMPILE_PREFIX_HEADER构建设置设置为NO,因为当您已有模块时,PCH不会提供很多好处.前缀标题仍然有效,它不会变成PCH.>你可以关闭模​​块.

相关文章

当我们远离最新的 iOS 16 更新版本时,我们听到了困扰 Apple...
欧版/美版 特别说一下,美版选错了 可能会永久丧失4G,不过只...
一般在接外包的时候, 通常第三方需要安装你的app进行测...
前言为了让更多的人永远记住12月13日,各大厂都在这一天将应...