是否可以在变量名末尾用相同的名称初始化变量?

问题描述

在某种情况下,我必须定义一些变量,以控制部分变量名(例如下面的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放在正确的位置。实际使用变量的位置相同。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...