小编jmu*_*muc的帖子

在C1X中初始化匿名结构或联合

我有以下问题:根据当前的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 == 0g.b == 3同时在TCC g.j == 3g.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)

c standards structure anonymous c11

19
推荐指数
1
解决办法
7864
查看次数

标签 统计

anonymous ×1

c ×1

c11 ×1

standards ×1

structure ×1