私はシステムワークベンチ4 stm32(eclipse)で動作します。 私は、C++ファイルにC(問題ありません)が含まれ、CファイルにC++ファイル(大きな問題)が含まれているC/C++の混在プロジェクトがあります。eclipse c/C++プロジェクト、GCCコンパイルG ++コード
私は明らかにC++ファイルでは.cpp/.hpp、cファイルでは.c/.hを定義しています。また、__cpluplus extern "C"の場合は、どのCファイルも宣言されていません。
しかしGCCのコンパイルでは、C++ヘッダー(.hpp)がGCCでコンパイルされ、 "unknown type class"と伝えられますが、これは間違ったC++(。 HPP)私はこのプロジェクトで作業することができますどのように
:
オプションA: は何とかプロジェクトのGCCコンパイラを削除して、Gと連携++のみ
質問A1:どのようにあなたは、コンパイラを削除するにはプロジェクト? 質問A2: は厳格なトップ町のアーキテクチャを有する、ここで、私は私のコンパイラは、すべての
オプションBでのようにdoesent型キャストの多くを行い例えばfreertosを使用するのでグラムの++は、かなりよりうるさいと文句を言わない、すべてをコンパイルしていますC++はcファイルをインクルードすることができますが、それ以外の方法では使用できません(コールバック/ ISRハンドリングを行うstm32 halレイヤーを使用するので良いオプションではありません)。
NO OPTION : のgccを使用することでのみ
どのようにそのようなことを解決するのです おかげで多くのことを?つもりはその後 限り、GCCでコンパイルすると、私の「未知の型クラス」を教えて...だろうが、その後、C++ヘッダ(.HPP)につながる、GCCのコンパイルこの:-)上
'#include's C++ヘッダー* Cソースファイル*ではありません。 これはC++ソースファイルです。 (C++ヘッダーの とそれに含まれるファイルにCコードだけが含まれていない限り、それは本当にCヘッダーではなく、実際はCヘッダーです) このようなソースファイルを呼び出すのは無意味です'foo.c'です。それは はC++コンパイラでしかコンパイルできません: 'foo.cpp'と呼んでください。 –
hi mike。あなたのご意見ありがとうございます。基本的には、厳密なトップダウンアーキテクチャ(.cppファイルには.hファイルが含まれていますが、.hppには.hppを含めることはできません)がありますが、私のコードはすべて基本的にC++として完全にコンパイルされる+ +コードです。 私が理解できないことは、なぜ私はg ++とgccコンパイラをEclipseプロジェクト内に持つ必要があるのですか?ビルド出力からgccは.cに使用され、g ++はすべてのファイルに対してg ++を使うことができるときに.cppに使用されます。 –