C 中的匿名结构:为什么标准说不
C 编译器可能允许匿名结构和联合作为代码可读性的辅助,但是该标准明确禁止匿名结构。了解此决定背后的基本原理是有效 C 编程的关键。
该标准允许匿名联合,因为它们存在于 C 中。但是,C 中不支持匿名结构,因此 C 不需要包含它们以实现兼容性原因。与允许方便地访问不同格式的数据的匿名联合不同,匿名结构在 C 中的用途有限。
提供的示例(其中结构包含三个可由成员变量和数组访问的浮点数)引起了关注关于未定义的行为。 C 的严格类型系统不允许写入一个联合成员,然后从另一个成员读取,这可能发生在匿名结构(如所示示例)中。
C 提供了管理数据结构的替代解决方案,而不是匿名结构。自定义类型(例如答案中演示的类型)提供了类似的功能,同时具有安全性和可读性。
通过这次讨论,我们深入了解了 C 底层的设计选择。该标准对兼容性的遵守及其对明确定义行为的关注指导了匿名结构等功能的包含或排除。通过理解这些原则,开发人员可以明智地选择采用哪种语言结构来满足其编程需求。
以上是为什么 C 不允许匿名结构?的详细内容。更多信息请关注PHP中文网其他相关文章!