Xcode 5.0 XCTest:宏'NULL'的模糊扩展

时间:2013-09-20 16:00:59

标签: objective-c xcode unit-testing xcode5 c-preprocessor

我正在使用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)。

2 个答案:

答案 0 :(得分:12)

在测试目标的构建设置中,尝试将“启用模块”设置为NO。

我在测试目标方面遇到了各种各样的麻烦,所有这些都在预处理器扩展之外。为我做这件事。

答案 1 :(得分:1)

尝试此操作:将-Wno-ambiguous-macro添加到Xcode - &gt;构建设置 - &gt;其他C旗帜