2016-05-05 9 views
0

でライブラリマクロの前に、私はこのheader.hでこのような何か持っていることを確認します:main.cppには自身のマクロは、C++

#ifdef SOME_MACRO 
#define MACRO_A 
    //Some code 1 
#else 
#define MACRO_A 
    //Some code 2 
#endif 

#include "header.h" 
#define SOME_MACRO 
... 
MACRO_A; //It should be Some code 1 

main.cppSOME_MACRO定義を作成する方法はあります影響を受けるのはheader.h

ヘッダーの前に#define SOME_MACROを置くことは変更されません。

+5

_ "ヘッダーの前に#define SOME_MACROを入れても変更はありません。" _これは間違いありません。実際に 'MACRO_A'をどのように定義したかを示してください。 –

+0

[こちら](http://coliru.stacked-crooked.com/a/d62dc1f782f69f38)を参照してください。 –

答えて

1

まず、はいあなたはインクルード文含める前に、あなたのセレクタの定義を配置する必要があります:私は、文字通りあなたのサンプルを取る場合、

#define SOME_MACRO // <<<<<<<<<<<<<<<<<<<<<<< 
#include "header.h" 

第二に、あなたはおそらくマクロ定義内のすべてのコードが行く必要があることを逃しました

#ifdef SOME_MACRO 
// Note the escaped line endings below: \ 
#define MACRO_A \ 
    //Some code 1 
#else 
#define MACRO_A \ 
    //Some code 2 
#endif 
関連する問題