我有变量a1, a2...a32
那么如何使用宏定义它们呢?
我试过
#define Name(i) a##i
for(int i=1; i<32;i++)
{
Name(i) = 1;
}
但实际上Name(i)
给了我
ai
而不是
a1 ... a32
PS:
我知道矢量。但是现在给出了变量名,所以我不能只写array[i]=1
,我必须写a1=1; ...; a32=1
等,这让我想用宏。
答案 0 :(得分:3)
您应该使用类似数组的容器(std::array
或std::vector
):
std::array<Type, 32> a;
和循环通过它:
for (auto element : a) { ... }
或使用任何标准算法。
如果你有一堆编号的变量,那通常是一个应该是数组的代码气味。
答案 1 :(得分:1)
在现实世界的编程中没有理由为什么你会被&#34;给予&#34;变量名。但如果你因为不明原因必须使用这些名字,那就把它们放在一个联盟中。
typedef struct
{
int a1;
int a2;
...
int a32;
} variables;
typedef union
{
variables var;
int array [32];
} my_union;
my_union mu;
for(int i=0; i<32; i++)
{
mu.array[i] = ...;
}