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

前端之家收集整理的这篇文章主要介绍了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.>你可以关闭模​​块.

原文链接:https://www.f2er.com/iOS/334144.html

猜你在找的iOS相关文章