使用宏而不是简单定义Boost.Preprocessor的基本原理?

例如,GM0ѭ和
BOOST_PP_ITERATION
,如GMan的答案所示,是预处理器宏,没有任何参数。是否有一个原因,他们不仅仅是简单的定义,并在没有
()
的情况下使用?     
已邀请:
通常,像宏这样的函数可用于防止无意的宏 扩张。 例如,假设我们有以下宏调用:
BOOST_PP_CAT( BOOST_PP_ITERATION, _DEPTH )
我们希望这会扩展到
BOOST_PP_ITERATION_DEPTH
。 但是,如果
BOOST_PP_ITERATION
是一个像(非功能)宏的对象, 它将在令牌之前扩展到自己的定义
BOOST_PP_ITERATION_DEPTH
由连接生成。     
大概是因为他们执行操作:因此,他们的使用应该清楚地表明你实际上正在调用某些东西,而不仅仅是使用一些常量。     

要回复问题请先登录注册