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 に設定されています)。