是否可以初始化名称相同但数字不同的变量?

Boo*_*man 2 c++ c++17

在某种情况下,我必须定义一些变量,在这些变量中我可以控制部分变量名称(如下var所示)。

float var1, var2, var3....;
Run Code Online (Sandbox Code Playgroud)

但我无法控制他们将采取的数字。(这是因为这些是var*我从其他一些代码中生成的,每次编译时,最后的这些数字都会不同)。

我的问题:有没有办法先验地定义这些变量?

喜欢(可以说var*是在var100.内生成的)

float var1,...,var100;
Run Code Online (Sandbox Code Playgroud)

无需明确键入每个var*. 将数组放在这个位置会好得多,但是有没有办法以这种方式做到这一点?

Aco*_*orn 5

如果您确实知道界限并且不介意留下未使用的变量,则可以使用预处理器来生成它们。例如:

#include <boost/preprocessor/repetition/repeat.hpp>

#define ONE_FLOAT(z, n, x) float var##n;

BOOST_PP_REPEAT(100, ONE_FLOAT, x)
Run Code Online (Sandbox Code Playgroud)

注 1:BOOST_PP_REPEAT手动实施超出了本答案的范围。

注 2:当然,数组和类似的解决方案是正确的解决方案,但问题不允许这些。


编辑:这是在知道提前知道界限之前写的。

不。您问的是如何在不知道名称的情况下定义变量,这是不可能的。

这也没有意义,因为如果你不知道他们的名字,你也无法对他们做任何事情。这就像在不知道符号是什么的情况下试图用符号编写方程。

您将需要某种代码生成脚本来为您填充它们,然后可能将它们填充到#include正确的位置。对于您实际使用变量的地方也是如此。