2

例如BOOST_PP_ITERATEBOOST_PP_ITERATION,正如 GMan 的 answere 所见是预处理器宏,没有任何参数。有没有理由他们不仅仅是简单的定义和使用没有()

4

2 回答 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 回答