3

我正在使用 Xcode 5。我有一个 OS X 框架/iOS 静态库项目,其中混合了 ObjC/C++ 代码和语言方言设置为 C11/C++11。

我添加了一个使用 XCTest 的Cocoa 单元测试包目标,我为 iOS 静态库和 OS X 框架创建了一个。

这是我拥有的代码和我在两者中得到的错误:

-(void) testExample
{
    NSObject* world = [NSObject new];

    world = nil;  <--- Ambiguous expansion of macro 'NULL'
}

运行 iOS 测试,编译器告诉我它正在使用 stddef.h(第 74 行((void*)0))中的 NULL 定义,而另一个定义在 usr/include/stdlib.h(第 115 行__DARWIN_NULL)中。

OS X 测试失败指向 usr/include/MacTypes.h(第 90 行__DARWIN_NULL),而这次的替代方法位于 stddef.h(第 74 行((void*)0))中。

谷歌对这个问题一无所知。我就像“好吧,我想这只是其中的一天......”。

关于这里可能发生的事情以及如何解决它的任何线索?

更新:

iOS 测试未运行是由于使用 OS X“Cocoa 单元测试包”创建了 iOS 单元测试包。/我一巴掌

OS X 测试问题仍然存在。但我有一种预感,在 OS X 10.9 (Mavericks) 上,这可能与缺少 10.9 SDK(Base SDK 设置为 10.8)有关。

4

2 回答 2

12

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

我一直在测试目标方面遇到各种麻烦,包括预处理器扩展。这样做为我解决了问题。

于 2013-09-23T05:03:20.143 回答
0

试试这个:添加-Wno-ambiguous-macro到 Xcode -> 构建设置 -> 其他 C 标志

于 2016-05-24T08:46:07.943 回答