将BOOST_PP_DEC传递给另一个宏

时间:2014-07-07 12:38:49

标签: c macros boost-preprocessor

我正在尝试完成类似的事情:

#define FOO( N ) Bar ## N ## _ Bar ## N - 1

所以说FOO( 2 ) = Bar2_Bar1

问题在于N-1那里。预处理器不会像这样做数学,但是boost有一个方便的BOOST_PP_DEC宏来递减输入。

所以,如果我现在尝试以下内容:

#define __FOO( N, N_MINUS_ONE ) BAR ## N _ ## Bar ## N_MINUS_ONE
#define FOO( N ) __FOO( N, BOOST_PP_DEC( N ) )

我原本希望它可以工作,但它实际上直接粘贴宏名称而不会对其进行评估。

奇怪的是,如果我这样做的话:

#define TEST( N ) BOOST_PP_DEC( N )

似乎有效。我到底错过了什么?

1 个答案:

答案 0 :(得分:0)

#define FOO( N ) BOOST_PP_CAT(Bar ## N ## _Bar, BOOST_PP_DEC(N))