C ++中的宏可以定义宏吗?

时间:2012-01-20 14:53:45

标签: c++ macros g++

我想知道是否可以在C ++中定义一个宏来定义另一个可以在以后的代码中使用的宏。这是可能的,还是g ++使用的预处理器对此有限?

4 个答案:

答案 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