私は以下のようなコードの一部を持っています:
#define FEATURE_A 1
void function()
{
// some code
#ifdef FEATURE_A
// code to be executed when this feature is defined
#endif
// some code
}
プログラムは#ifdef - #endif内のコードを実行しません。しかし、 # ifdefを#ifndefに変更して#defineマクロを削除すると、コードが実行されます。以下のコードは期待どおりに動作します。
//#define FEATURE_A 1
void function()
{
// some code
#ifndef FEATURE_A
// code to be executed when this feature is defined
#endif
// some code
}
#ifdef内の最初のケースのコード- #endifが実行されず、2 番目のケースでは機能する理由を誰かが説明できますか? 誰がどの設定が間違っている可能性があるか教えてもらえますか?
これが問題かどうかはわかりませんが、Visual Studio 2010 を使用しています。
前もって感謝します
更新: クリーンして再実行すると、2番目のものも機能しません。有効にしたコードとしてエディターに表示されるのはその唯一です。
project->property->Configuration Properties-> c/c++ -> Preprocessor でマクロを定義すると、両方とも正常に動作します。