【问题标题】:Xcode 5.0 XCTest: ambiguous expansion of macro 'NULL'Xcode 5.0 XCTest:宏“NULL”的模糊扩展
【发布时间】:2013-09-26 02:18:41
【问题描述】:

我正在使用 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 中的 NULL 定义(第 74 行,((void*)0)),而另一个定义在 usr/include/stdlib.h 中(第 115 行,__DARWIN_NULL )。

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

Google 对此问题一无所知。我就像“嗯,我想这只是其中的一天......”。

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

更新:

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

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

【问题讨论】:

  • 我在.m 文件中遇到了同样的问题,但在更改.mm 后警告消失了

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


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-08
      • 1970-01-01
      • 1970-01-01
      • 2014-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多