【发布时间】:2012-01-27 04:35:49
【问题描述】:
C11 支持匿名结构,如下所示:
struct Foo
{
struct
{
size_t x, y;
};
};
struct Foo f;
f.x = 17;
f.y = 42;
基本上,此类struct 的成员被视为封闭struct 或union 的成员(递归,如果封闭结构本身是匿名的)。
C++11 不包括匿名结构的理由是什么?当然,它们只是非常有用(主要是在联合内部,以消除为struct 输入标识符)。但它们似乎是对规范的一个足够明显的补充(并且已经由许多编译器实现),肯定必须讨论它们,至少要保持与 C11 标准的兼容性。那么为什么不添加呢?
【问题讨论】:
-
我不同意这个问题没有建设性的投票。更温和的问题也可以。
-
实际上大多数 C++11 编译器也支持匿名结构。我在 MSVC++(从那时起)和 Apple 的 llvm C++11 编译器中都使用过它们。
-
MinGW 也支持匿名结构/联合。
标签: c++ c c++11 anonymous-types c11