1

我想使用 BOOST_PP_REPEAT(count, macro, data) 我的宏看起来像

`模板(z,n,x,y)

BOOST_PP_REPEAT (5, 模板, 4, 5)`

它抱怨 BOOST_PP_REPEAT 被传递了 4 个参数,而它只需要 3 个。有没有办法将两个参数打包到 BOOST_PP_REPEAT 的“数据”参数中。

谢谢!

4

2 回答 2

2

使用BOOST_PP_TUPLE_ELEM

#define TEMPLATE (z, n, data) use_first(BOOST_PP_TUPLE_ELEM(2, 0, data)); use_second(BOOST_PP_TUPLE_ELEM(2, 1, data));
#define YOUR_MACRO(n, arg1, arg2) BOOST_PP_REPEAT(5, TEMPLATE, (arg1, arg2))
于 2014-05-29T07:38:35.290 回答
1

使用嵌套括号使参数列表成为一个不同的参数:

BOOST_PP_REPEAT (5, TEMPLATE_2ARG, (4, 5))

然后从里面剥去多余的括号TEMPLATE_2ARG

#define STRIP_PARENS( ... ) __VA_ARGS__

#define TEMPLATE_2ARG( I, ARGS ) TEMPLATE( I, STRIP_PARENS ARGS )
#define TEMPLATE( I, X, Y ) whatever
于 2013-11-20T23:30:55.603 回答