一些C++编译器允许使用匿名联合体和结构体,作为标准C++的扩展。这是一种语法糖,有时非常有用。
那么,阻止它成为标准的原理是什么?存在技术障碍吗?哲学上的障碍?还是只是没有足够的需求来证明其必要性?
以下是我所说的示例:
struct vector3 {
union {
struct {
float x;
float y;
float z;
};
float v[3];
};
};
我的编译器能够接受这个,但是它警告说"无名结构体/共用体"是C++的非标准扩展。
struct { int i; } a; a.i = 0;
(类型没有名称)。第二个是C++ 不支持 的这种格式:struct { int i; }; i = 0;
(类型没有名称,并且它溢出到周围的作用域)。然而,C++同时支持未命名和匿名联合体。 - Johannes Schaub - litb