我想知道是否可以在C ++中定义一个宏来定义另一个可以在以后的代码中使用的宏。这是可能的,还是g ++使用的预处理器对此有限?
答案 0 :(得分:5)
不,您无法在另一个宏的扩展中定义宏。
答案 1 :(得分:1)
不,你不能将宏定义为宏。
答案 2 :(得分:1)
你可以做这样的事情,它不是你想要的,但它可能会有所帮助。
#ifdef ENABLE_MACRO_1
#define PRINT_MACRO(varName) \
std::cout<<varName<<std::endl;
#else
#define PRINT_MACRO(varName) \
//do nothing
#endif
因此,您可以根据定义的另一个前置条件来定义宏。
答案 3 :(得分:1)
预处理器只对源代码进行一次传递,因此这是不可能的。但是,您可以使用外部工具在编译之前执行一些预处理,例如m4。