2016-09-22 11 views
1

で解決することはできません私はこのようなコンパイル時に私のプログラムに定義されたマクロを渡すためにしようとしています、コンパイルから渡された:マクロは日食

#include <stdio.h> 
int main() { 
    // KEY_CNT is not defined in program but passed at compile time 
    printf("KEY_CNT: %d", KEY_CNT); 
    return 0; 
} 

g++ -DKEY_CNT=2 -O2 test_3.cpp -o test_3でコンパイルし、期待どおりに動作しますが、問題がありますEclipseは 'KEY_CNT'を解決できません。これはちょうどおもちゃの例です、私の元のプログラムでは、赤い線でこれのような多くの誤ったエラーは本当に迷惑です。

私は、 'KEY_CNT'が定義されていることを知るためにEclipseにコンパイルオプションを通知する必要があると思うので、Properties -> C/C++ Build -> Settings -> GCC C++ Compiler -> Miscellaneous-DKEY_CNT=2を追加します。

これを解決するためのアドバイスはありますか?

========添加========

Eclipseバージョン:C/C++開発者は、ルナサービスリリース2 IDEのEclipse(4.4.2)

+0

コンパイルされている限り、Eclipseでコンパイルオプションでマクロが定義されていることを知りませんでしたか? –

+0

@AdrianColomitchi私はおそらく私の設定は、正しい方法ではないか、Eclipseがdefinationを知るのに十分ではないと思いますか?よく分かりません。任意の可能性のある手がかり? – MarZzz

+0

"ルナサービスリリース2(4.4.2)"他のものに制約されない限り、私はMars.2(4.5.2)にアップグレードすることをお勧めします - インデクサーはトラブルが少なくなります(少なくとも私の個人的な経験です) –

答えて

2

プロパティ - > C/C++ビルド - >設定 - > GCC C++コンパイラ - >その他

間違った場所です。

"C/C++ビルド - >設定 - > GCC C++コンパイラ - >プリプロセッサ" である必要があります

はちょうどそれが動作確認しました。