【发布时间】:2014-06-12 19:09:57
【问题描述】:
我想定义一个宏,基于某些条件(#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 时产生错误。我只想在我调用MyMacro() 并且尚未定义INITED 时生成错误。
我不是第一个代码的奴隶,但我希望结果完全按照我上面描述的方式工作(在调用宏时生成错误 MyMacro IF 常量 inited 没有定义)。
【问题讨论】:
-
我很确定这是不可能的。这需要预处理器多次通过代码,我很确定它不会这样做。
标签: c++ c macros conditional-compilation ifdefine