我正在使用Xcode 5.我有一个OS X Framework / iOS静态库项目,其中混合的ObjC / C ++代码和语言方言设置为C11 / C ++ 11。
我添加了一个使用XCTest的 Cocoa Unit Testing Bundle 目标,我为iOS静态库和OS X框架创建了一个。
这是我的代码和我在两者中得到的错误:
-(void) testExample
{
NSObject* world = [NSObject new];
world = nil; <--- Ambiguous expansion of macro 'NULL'
}
运行iOS测试,编译器告诉我它正在使用stddef.h中的NULL定义(第74行,((void*)0)
)而另一个定义在usr / include / stdlib.h中(第115行,{ {1}})。
OS X测试失败指向usr / include / MacTypes.h(第90行,__DARWIN_NULL
),这次替换是在stddef.h中(第74行,__DARWIN_NULL
)。
Google在此问题上没有任何内容。我就像“嗯,我想这只是其中一天......”。
有关此处可能发生的事情以及如何解决问题的任何线索?
更新
未运行的iOS测试是由于使用OS X“Cocoa Unit Testing Bundle”创建了iOS单元测试包。 /我一巴掌
OS X测试问题仍然存在。但我有预感,在OS X 10.9(Mavericks)上,这可能与缺少的10.9 SDK有关(Base SDK设置为10.8)。
答案 0 :(得分:12)
在测试目标的构建设置中,尝试将“启用模块”设置为NO。
我在测试目标方面遇到了各种各样的麻烦,所有这些都在预处理器扩展之外。为我做这件事。
答案 1 :(得分:1)
尝试此操作:将-Wno-ambiguous-macro
添加到Xcode - &gt;构建设置 - &gt;其他C旗帜