很抱歉重复。我不知道怎么用谷歌搜索。
是否允许在const结构的初始化列表中重复字段?
示例:
const struct first _first = {
.value = 1,
.value = 2, /* same field again */
};
const struct second _second = {
.first = _first,
.first.value = 3, /* and again */
};
第二种情况当然更重要。
答案 0 :(得分:2)
这是允许的,以后的初始化程序将覆盖之前的所有初始化程序。
这在C标准的6.7.9p19部分中指定:
初始化应按初始化列表顺序进行,每个 为覆盖所有子对象的特定子对象提供的初始化程序 先前列出的同一子对象的初始化程序; 151)全部 未显式初始化的子对象应被初始化 隐式地与具有静态存储持续时间的对象相同。
151)被覆盖的子对象的任何初始化程序,因此不能 初始化该子对象可能根本不会进行评估。