いくつかの条件 (マクロのパラメーターではなく の存在) に基づいて、#define INITED
値を返すか、次のようなコンパイラ エラーを生成するマクロを定義したいと考えています。
#error Not initialized!
私は(のためにmyIdea.h
)試しました:
#ifdef INITED
#define MyMacro(x) x->method(); //something with x
#else
#define MyMacro(x) #error Not initalized!
#endif
しかし、そのコードはエラーを生成します(私が望んでいたものではありません)expected macro format parameter
。
私はそのコードを望んでいないことに注意してください(動作しますが、少し異なることをしています):
#ifdef INITED
#define MyMacro(x) x->method(); //something with x
#else
#error Not initalized!
#endif
上記のコードは、INITED が定義されていない場合にのみエラーを生成します。AND INITED has not been definedを呼び出したときにMyMacro()
のみエラーを生成したい。
私は最初のコードの奴隷ではありませんが、結果が上記で説明した方法とまったく同じように機能することを望んでいます (マクロMyMacro IF 定数が初期化されているときにエラーを生成します)。