有没有一种快速的方法来初始化具有相同属性的结构数组?

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 }
};