同じターゲットに対して非常によく似た(ほとんどのコードを共有する)2つの組み込みプロジェクトを開発しています。そのために、ビルドAとビルドBの2つのビルドを作成しました。各ビルドには、プロジェクトに応じてソースコードを含めるか除外するために、シンボル「DEVICE_TYPE=」で定義されたいくつかの小さな違いがあります。私が次のことができるように、
#if (DEVICE_TYPE == A)
[Code for build A]
#endif
#if (DEVICE_TYPE == B)
[Code for build B]
#endif
ここでの私の問題は、Eclipseの構文が常にエラーをスローしていることです。これは、明らかにDEVICE_TYPEがBに等しいと常に考えているためです。ただし、どちらのビルドも問題なくコンパイルされます。
アップデート:
シンボルは、Project_Properties-> C / C++ビルド->設定->ツール設定->コンパイラ->プリプロセッサ->シンボルの定義(-D)で次のように定義されます。
ビルドAの場合
DEVICE_TYPE=A
A=0
B=1
ビルドBの場合
DEVICE_TYPE=B
A=0
B=1
ここでの問題は、Eclipseの場合、どのビルドが選択されていても、DEVICE_TYPEは常にBであるということです。これは、内部のすべてのコード#if (DEVICE_TYPE==A)
が灰色であることを意味します。