首页 > 解决方案 > 是否可以在最后初始化具有相同名称但不同数字的变量?

问题描述

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

float var1, var2, var3....;

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

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

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

float var1,...,var100;

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

标签: c++c++17

解决方案


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

#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将它们放在正确的位置。对于您实际使用变量的地方也是如此。


推荐阅读