我有以下问题:根据当前的C1X草案,匿名结构(或联合)如何正确初始化?这是合法的:
struct foo {
int a;
struct {
int i;
int j;
};
int b;
};
struct foo f = { 1, 2, 3, 4 };
struct foo g = { 1, { 2 }, 3 };
Run Code Online (Sandbox Code Playgroud)
在海湾合作委员会,g.j == 0并g.b == 3同时在TCC g.j == 3和g.b == 0.目前的草案说:
"[...]结构和联合类型的对象的未命名成员不参与初始化.结构对象的未命名成员即使在初始化之后也具有不确定的值."
这真的可以吗?是不是
struct foo h = { 0 };
Run Code Online (Sandbox Code Playgroud)
应该将所有成员设置为0?
非常感谢!
更新:
由于匿名成员似乎只在混合结构/联合时有用,如何正确初始化它:
struct bar {
int tag;
union {
double …Run Code Online (Sandbox Code Playgroud)