姬長信(Redy)

为什么C禁止匿名结构?


一些C编译器允许匿名联合和结构作为标准C的扩展.这有点语法糖,偶尔会非常有帮助.

阻止它成为标准一部分的理由是什么?是否存在技术障碍?一个哲学的?或者仅仅是不足以证明它的合理性?

这是我正在谈论的样本:

struct vector3 {
  union {
    struct {
      float x;
      float y;
      float z;
    };
    float v[3];
  };
};

我的编译器会接受这个,但它会警告“nameless struct/union” is a non-standard extension to C++.