一个联合体内不同匿名联合中具有相同名称的字段

时间:2018-11-14 22:38:22

标签: c++ language-lawyer unions type-definition

在一个联合体内的不同匿名联合中具有相同名称的字段合法吗?

union Foo
{
    union
    {
        int bar;
    };

    union
    {
        int bar;
    };
};

此代码无法通过GCC编译,但在MSVC中可以正常工作。

1 个答案:

答案 0 :(得分:8)

这是C ++标准所不允许的。任何编译该代码的编译器都是不合格的。

请参见10.4.1 / 1:

  

匿名联合会成员的姓名应与   匿名范围内任何其他实体的名称   声明了联合。