2009-07-17 17 views
2

iPhoneアプリケーション用の.mmファイル(Objective-C++)をコンパイルしていて、プリコンパイル済みヘッダーに基本クラスが含まれていません。Objective-C++と同等の__OBJC__

Iは、以下にそれを追跡:

#ifdef __OBJC__ 
    #import <Foundation/Foundation.h> 
    #import <UIKit/UIKit.h> 
#endif 

は、それが標準のMファイルに定義されている一方__OBJC__は、MMファイルの未定義であり、判明しました。

代わりに使用できるフラグはありますか?

答えて

2

-dM -Eでgccを起動すると、前処理後に停止し、すべて#definesと表示されます。これは通常、ビルトインの定義がどのように設定されているかを確認する方法です。しかし、私はちょうどテスト.mmファイルでこれを試して、__OBJC__が私のために定義されています。なぜあなたのために定義されていないのか分かりません。

$ echo "int foo() {};" > tmp.mm 
$ gcc -dM -E tmp.mm|grep OBJ 
#define __OBJC__ 1 
#define OBJC_NEW_PROPERTIES 1