首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >匿名结构会改变布局和填充吗?

匿名结构会改变布局和填充吗?
EN

Stack Overflow用户
提问于 2017-05-11 14:58:43
回答 1查看 208关注 0票数 0

我正在处理来自遗留接口的匿名结构。在运行时,字段从外部源填充,例如:

代码语言:javascript
复制
struct foo {
    union {
        struct {
            int a;
        };

        struct {
            int b;
            int c;
            int d;
        };
    };
};

这个联合的想法是,根据外部因素,遗留接口使foo的行为就好像它只包含结构1或2。在C++中,匿名联合是合法的,而匿名结构是不合法的。据我所知,匿名结构真正要做的就是让它的成员对外部作用域可见。

匿名结构对程序有没有什么“可见的效果”,或者只是用来对相关字段进行分组?也就是说,我可以让它成为union { int a; int b; int c; int d; }而不与前面的代码有明显的区别吗?

EN

回答 1

Stack Overflow用户

发布于 2017-05-11 15:03:13

这两个例子是完全不同的。

union { int a; int b; int c; int d; }有4个成员,一次只能有一个成员处于活动状态。所有4个元素都有相同的大小。

代码语言:javascript
复制
union {
    struct { int a; };
    struct { int b,c,d };
};

有2个成员,并且它们的大小不相同。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43908550

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档