C 初始化常量结构时重复字段

C 初始化常量结构时重复字段,c,C,对不起,可能有重复。我不知道怎么用谷歌搜索它 是否允许重复const struct的初始值设定项列表中的字段 示例: const struct first _first = { .value = 1, .value = 2, /* same field again */ }; const struct second _second = { .first = _first, .first.value = 3, /* and again */ }; 第二种情况当然

对不起,可能有重复。我不知道怎么用谷歌搜索它

是否允许重复const struct的初始值设定项列表中的字段

示例:

const struct first _first = {
    .value = 1,
    .value = 2, /* same field again */
};

const struct second _second = {
    .first = _first,
    .first.value = 3, /* and again */
};

第二种情况当然更重要。

这是允许的,后面的初始值设定项会覆盖前面的任何初始值设定项

这在C标准第6.7.9p19节中有规定:

初始化应按初始化器列表顺序进行,每个 为覆盖任何子对象的特定子对象提供的初始值设定项 以前列出的同一子对象的初始值设定项;151)全部 未显式初始化的子对象应初始化 隐式地与具有静态存储持续时间的对象相同

151)被覆盖的子对象的任何初始值设定项 用于初始化该子对象的参数可能根本无法计算


谢谢。。。我知道它在GCC中工作,但我想确保这种行为是标准的。