我正在用C写一个标记联合,定义如下:
struct uuid_0000000000061d0c {
long _0;
union {
struct {void* _1;};
struct {char* _1001; char* _1002;};
struct {char* _2001;};
struct {};
};
};
一个标记的联合中有四个匿名案例。我的问题是,当我用“大”两个字段的情况初始化它时,我最终收到警告“警告:结构初始值设定项中有多余的元素”。
struct uuid_0000000000061d0c an_instance = { 1, "a", "b" };
按照我的直觉,我成功地重构了原始类型定义以避免错误。基本上,将具有最大数量字段的匿名结构移动到联合的开头可以修复此警告。
struct uuid_0000000000061d0c {
long _0;
union {
struct {char* _1001; char* _1002;};
struct {void* _1;};
struct {char* _2001;};
struct {};
};
};
这是警告的错误还是我误解了警告的意图?
由于初始化没有指定使用哪个联合成员,因此它尝试使用第一个。