MSDN认为匿名结构在 C++ 中是非标准的:
Microsoft C 扩展允许您在另一个结构中声明结构变量而无需为其命名。这些嵌套结构称为匿名结构。C++ 不允许匿名结构。
您可以像访问包含结构中的成员一样访问匿名结构的成员。
有人告诉我,此功能不一定与创建一个未命名的结构相同,但我看不出标准措辞方面的区别。
C++11 说:
[C++11: 9/1]
: [..]类头省略类头名的类说明符定义了一个未命名的类。
并为缺少名称的类型定义提供完整的语法结构。
C++03 缺少这种明确的措辞,但类似地表明identifier
类型定义中的 是可选的,并引用了 和 中的“未命名类9.4.2/5
” 3.5/4
。
- 那么MSDN错了吗,这些东西都是完全标准的?
- 或者在“未命名的结构/类”和用作阻止它们被此 C++03/C++11 功能覆盖的成员时,我是否缺少一些微妙之处?
- 我是否错过了“未命名结构”和“匿名结构”之间的一些根本区别?它们对我来说就像同义词。