一些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 ++ 确实支持未命名和匿名联合。