问题描述
在某种情况下,我必须定义一些变量,以控制部分变量名(例如下面的var
)。
float var1,var2,var3....;
但是我对他们将要使用的数字没有任何控制。 (这是因为这些var*
是我从其他每次编译的代码中产生的,这些数字末尾的数字将有所不同。)
我的问题:有什么办法可以事先定义这些变量?
就像(假设var*
是在var100
内生成的。)
float var1,...,var100;
,而无需显式键入每个var*
。
在这个位置放置数组本来会好得多,但是有什么办法可以这样做吗?
解决方法
如果您知道界限,并且不介意留下未使用的变量,则可以 使用预处理器来生成它们。例如:
#include <boost/preprocessor/repetition/repeat.hpp>
#define ONE_FLOAT(z,n,x) float var##n;
BOOST_PP_REPEAT(100,ONE_FLOAT,x)
注1:手动实现BOOST_PP_REPEAT
超出了此答案的范围。
注2:当然,数组和类似的解决方案是合适的,但是这个问题不允许这样做。
编辑:这是在事先知道边界已知之前编写的。
不。您正在询问如何在不知道变量名称的情况下定义变量,这是不可能的。
这也没有道理,因为如果您不知道他们的名字,您也不能对他们做任何事情。就像试图在不知道符号是什么的情况下用符号编写方程式。
您将需要某种代码生成脚本,这些脚本将为您填充它们,然后#include
放在正确的位置。实际使用变量的位置相同。