3

単純なObjective-C++アプリケーションを作成しようとしています。C ++クラスをミックスに追加しようとするまで、Objective-CクラスでのC ++の使用を含め、すべてのコードは正常にコンパイルされています。単純なC++クラスを作成しました。

Test.h

class Test {

};

このファイルをObjective-Cクラス(拡張子.mm)に含めると、次のビルドエラーが発生します。

error: expected '=', ',', ';', 'asm' or '__attribute__' before 'Test'

明らかに、私はここでいくつかの単純な概念を見逃しています。いくつかの啓蒙をいただければ幸いです。

4

4 に答える 4

2

さて、 Appleのドキュメントをさらに詳しくスキャンした後__cplusplus、ヘッダーファイルでプリプロセッサフ​​ラグを使用することへの答えのように見えます。コードは次のようになります。

#ifdef __cplusplus

class Test {

};

#endif
于 2010-09-13T08:05:29.733 に答える
2

helixedの答えは役に立ちません。__cplusplusが未定義の場合、クラスはプリプロセッサによってスキップされます。

*.mファイルからC++クラスをインクルードしようとしているほとんどの場合、名前を*.mmに変更してみてください。これは私の側の同じ問題を解決します。

于 2010-09-15T12:39:06.637 に答える
2

必要なプリプロセッサコマンドは次のようにすべきではありません。

#ifdef __cplusplus
于 2011-01-17T15:30:57.370 に答える
1

Xcode 6には、次のオプションがあります。

Apple LLVM 6.0 - Language -> Compile Sources As

これをObjective-C++に設定すると、ファイル拡張子は関係ありません。これは、クロスプラットフォームで作業していて、他のファイル拡張子を使用する必要がある場合に特に便利です。

于 2015-01-21T17:17:40.443 に答える