哪些标准允许C和C ++中的匿名结构和联合?

时间:2012-09-10 15:46:37

标签: c++ c struct anonymous unions

我们在哪里可以使用匿名结构和联合体?

struct
{
    int bar;
}; // anonymous struct

union
{
    int bar;
}; // anonymous union

我认为我们可以按照以下标准来做:

  • 联盟 - C ++ 98,C ++ 03,C ++ 11,C11

  • 结构 - C11

我是对还是

1 个答案:

答案 0 :(得分:5)

关于C的陈述是正确的:匿名结构和联合的标准化是相当新的(C11)cfr. GCC man

请注意,您首选的编译器可以将这些功能作为当前支持标准的扩展(例如GNU C99扩展)。

然后,检查旧规范,似乎自1998以来C ++支持匿名联合。

众所周知,C ++中禁止使用匿名结构,但我没有找到任何修改。从Visual studio 2012开始,确认C ++不支持此功能。