例如BOOST_PP_ITERATE
和BOOST_PP_ITERATION
,正如 GMan 的 answere 所见,是预处理器宏,没有任何参数。有没有理由他们不仅仅是简单的定义和使用没有()
?
问问题
282 次
2 回答
4
通常,可以使用宏之类的功能来防止无意的宏扩展。
例如,假设我们有以下宏调用:
BOOST_PP_CAT( BOOST_PP_ITERATION, _DEPTH )
我们预计这将扩展到BOOST_PP_ITERATION_DEPTH
.
但是,如果BOOST_PP_ITERATION
是一个类似对象的(非功能性)宏,它会在
BOOST_PP_ITERATION_DEPTH
连接生成标记之前扩展为自己的定义。
于 2011-03-31T13:08:06.397 回答
1
大概是因为它们执行操作:因此,它们的使用应该清楚地表明您实际上是在调用某些东西,而不仅仅是使用一些常量。
于 2011-03-31T11:59:42.297 回答