有没有一种快速的方法来初始化具有相同属性的结构数组?
Is there a quick way to initialise a struct array with the same attributes?
struct child {
char name[32];
int height;
};
struct child group_a[8];
我想用相同的名称和高度初始化 group_a 中的每个 child,例如名称 = "XXX" 和高度 = "100"。
有没有快做的,而不是struct child group_a[8] = {{"XXX", 100}, {"XXX", 100}, ..., {"XXX", 100}}
?
尝试像这样使用复合文字:
int i = 8;
while(i--)
group_a[i] = (struct child) { "XXX", 100 };
也许有点蹩脚,但为什么不使用宏呢?
#define H {"XXX", 100}
struct child group_a[8] = {H, H, H};
如果没有更深层次的预处理器魔法,就无法在标准 C 中完成。然而,在指定的初始值设定项中有范围的扩展。它得到主要编译器(GCC、CLANG、Intel)的支持。
struct child group_a[] = {
[0 ... 7] = { .name = "XXX", .height = 100 }
};
struct child {
char name[32];
int height;
};
struct child group_a[8];
我想用相同的名称和高度初始化 group_a 中的每个 child,例如名称 = "XXX" 和高度 = "100"。
有没有快做的,而不是struct child group_a[8] = {{"XXX", 100}, {"XXX", 100}, ..., {"XXX", 100}}
?
尝试像这样使用复合文字:
int i = 8;
while(i--)
group_a[i] = (struct child) { "XXX", 100 };
也许有点蹩脚,但为什么不使用宏呢?
#define H {"XXX", 100}
struct child group_a[8] = {H, H, H};
如果没有更深层次的预处理器魔法,就无法在标准 C 中完成。然而,在指定的初始值设定项中有范围的扩展。它得到主要编译器(GCC、CLANG、Intel)的支持。
struct child group_a[] = {
[0 ... 7] = { .name = "XXX", .height = 100 }
};