gpt4 book ai didi

c++ - 匿名结构会更改布局和填充吗?

转载 作者:行者123 更新时间:2023-11-28 05:09:04 25 4
gpt4 key购买 nike

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

struct foo {
union {
struct {
int a;
};

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

union 的想法是,根据外部因素,遗留接口(interface)使 foo 表现得好像它只包含结构 1 或 2。C++ 中的匿名 union 是合法的;匿名结构不是。据我所知,匿名结构真正做的就是使其成员对外部作用域可见。

匿名结构是否对程序有任何“可见影响”,或者它只是对相关字段进行分组有用吗?也就是说,我可以让它 union { int a;诠释乙;诠释 c;诠释 d; 与之前的代码没有明显的区别?

最佳答案

这两个例子完全不同。

union { int a;诠释乙;诠释 c;诠释 d; 有 4 个成员,一次只能激活其中一个。所有 4 个元素都具有相同的大小。

union {
struct { int a; };
struct { int b,c,d };
};

有 2 个成员,他们的大小相同。

关于c++ - 匿名结构会更改布局和填充吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43908550/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com