2012-01-20 82 views
0

我想知道是否可以在C++中定义一个宏,该宏定义了可以在以后的代码中使用的另一个宏。这是可能的,还是由g ++使用的预处理程序对此太有限制了?C++中的宏可以定义宏吗?

+1

它不是“g ++使用的预处理程序”,它不够强大,它是C++语言本身不允许的。如果你解释了你想完成的任务,我肯定这里的人可以想出一个解决方案。 – Lindydancer

+0

你怎么会被这个“限制”?分享你想要完成的事情。 –

回答

5

不,你不能在另一个宏的扩展中定义一个宏。

1

不,你不能将宏定义为宏。

1

你可以这样做,它不是你正在寻找的东西,但它可能会有所帮助。

#ifdef ENABLE_MACRO_1 
#define PRINT_MACRO(varName) \ 
     std::cout<<varName<<std::endl; 
#else 
#define PRINT_MACRO(varName) \ 
     //do nothing 
#endif 

所以,你可以定义根据其定义中定义的另一个preprecursor条件的宏。

1

预处理程序只在源代码上传递一次,所以这是不可能的。但是,您可以使用外部工具在编译之前执行一些预处理,例如m4