C语言 是否有一种快速的方法来初始化具有相同属性的结构数组?


struct child {
char name[32];
int height;
};
struct child group_a[8];

我想用相同的名字和高度初始化group_a中的每个子元素,例如name = "XXX"And height = "100"

有一个快速做,而不是struct child group_a[8] = {{"XXX", 100}, {"XXX", 100}, ..., {"XXX", 100}}?

如果没有更深入的预处理器魔法,这在标准C中是无法完成的。然而,在指定初始化式中有一个范围的扩展。它被主要编译器(GCC, CLANG, Intel)支持。

struct child group_a[] = {
[0 ... 7] = { .name = "XXX", .height = 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};

最新更新