3

Xcode 5 を使用しています。ObjC/C++ コードが混在し、言語方言が C11/C++11 に設定された OS X フレームワーク/iOS スタティック ライブラリ プロジェクトがあります。

XCTest を使用するCocoa Unit Testing Bundleターゲットを追加し、iOS スタティック ライブラリと OS X フレームワークの両方に 1 つ作成しました。

これは私が持っているコードであり、両方で発生するエラーです:

-(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 はこの問題について何も持っていません。「うーん、最近の 1 つだと思います...」みたいな感じです。

ここで何が起こっているのか、そしてそれを修正する方法についての手がかりはありますか?

アップデート:

実行されていない iOS テストは、OS X の「Cocoa Unit Testing Bundle」を使用して iOS 単体テスト バンドルを作成したことが原因でした。/ミースラップ

ただし、OS X のテストの問題は解決しません。しかし、OS X 10.9 (Mavericks) では、これは 10.9 SDK の欠落に関連している可能性があるという予感があります (基本 SDK は 10.8 に設定されています)。

4

2 に答える 2

12

テスト ターゲットのビルド設定で、「モジュールを有効にする」を NO に設定してみてください。

プリプロセッサの拡張を中心に、テスト ターゲットでさまざまな問題が発生しています。これを行うことで、私にとっては修正されました。

于 2013-09-23T05:03:20.143 に答える