c++ - 是否可以在最后初始化具有相同名称但不同数字的变量?
问题描述
在某种情况下,我必须定义一些变量,我可以控制部分变量名称(如下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
将它们放在正确的位置。对于您实际使用变量的地方也是如此。
推荐阅读
- python - ModuleNotFoundError:没有名为“posts.urls”的模块
- python - MongoDB:列表对象
- python - 基于一列对numpy数组进行排序然后基于另一列进行子排序的最佳方法?
- swift - 使用 cocoapod 安装框架时出错
- python - 创建类后更改特殊属性 __slots__
- nginx - NGINX access.log 未更新
- html - 滑块图像和导航之间的差距
- numba - Numba (AOT) vs Nuitka
- verilog - Verilog 行为建模:语法错误,意外结束
- javascript - Appium & UiAutomator2 自动化已经打开的应用程序