首页 > 后端开发 > C++ > 匿名结构是 C 中的标准吗?

匿名结构是 C 中的标准吗?

Susan Sarandon
发布: 2024-12-03 08:02:10
原创
123 人浏览过

Are Anonymous Structs Standard in C  ?

“匿名结构”是 C 中的标准吗?

MSDN 声称匿名结构在 C 中是非标准的,但仔细检查会发现不同的场景。虽然 C 标准定义了“未命名结构”,但它并没有专门解决“匿名结构”的概念。

定义未命名结构

C 标准允许未命名结构的声明,也称为匿名结构。这些结构没有名称,通常用作其他结构中的嵌套类型。以下代码片段演示了一个未命名的结构:

此代码在 Foo 结构中定义了一个未命名的结构。未命名结构由两个成员组成:hi 和 bye。

访问匿名结构的成员

标准 C 允许使用点运算符访问未命名结构的成员。例如,在前面的示例中,可以按如下方式访问 hi 成员:

匿名结构与“未命名结构作为成员”

While C 03和 C 11 没有明确提及“匿名结构”,即访问未命名结构成员的现象,就好像它们是父结构的成员,没有具体提及。这种行为被称为“匿名结构作为成员”,未包含在未命名结构的标准中。

MSDN 的混乱

MSDN 似乎错误地将未命名结构与匿名结构作为成员。虽然未命名结构是标准的,但作为成员的匿名结构是某些编译器(例如 GCC 和 Visual C)支持的非标准功能。

结论

总之,虽然匿名结构作为成员在 C 中不是标准的,标准完全支持未命名结构。术语“未命名结构”和“匿名结构”指的是不同的概念,后者指的是访问未命名结构的成员的非标准行为,就好像它们是父结构的成员一样。

以上是匿名结构是 C 中的标准吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板