我们为变量编号,例如:

float my_float_0;
float my_float_1;
float my_float_2;


是否有任何形式的模板/宏魔术可以让我们通过for循环中的索引访问这些变量?

最佳答案

如果您无法控制变量,则唯一的选择就是进行一些良好的宏元编程。 Boost.Preprocessor's documentation是一个很好的起点-您可以遍历一个数字范围,并将它们与my_float_令牌连接起来以产生您的变量名。

示例(未试用):

#define SEQ (0)(1)(2)
#define MACRO(r, data, elem) BOOST_PP_CAT(elem, data)

BOOST_PP_SEQ_FOR_EACH(MACRO, my_float_, SEQ)
// expands to my_float_0 my_float_1 my_float_2


通过更改MACRO的扩展范围,可以为每个变量生成代码。

10-07 19:52
查看更多