执行匿名结构更改布局和填充
Do anonymous struct change layout and padding?
我正在处理来自遗留接口的匿名结构。在运行时,字段从外部源填充,例如:
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; }
而没有与以前的代码有明显的差异吗?
这两个例子完全不同。
union { int a; int b; int c; int d; }
有 4 个成员,一次只能有一个成员处于活动状态。所有 4 个元素的大小相同。
union {
struct { int a; };
struct { int b,c,d };
};
有 2 个成员,他们的大小不一样。
相关文章:
- 在c++中用vector填充一个简单的动态数组
- 如何使用用户输入在C++中正确填充2D数组
- 如何使用C/C++在MacOSX中获得键盘布局
- 如何找到大小'x'数组是否完全填充,在C++?
- Cuda C++:设备上的Malloc类,并用来自主机的数据填充它
- 通过for循环使用用户输入填充列表
- Vulkan验证层不断在VkQueuePresentKHR()上抛出图像布局错误
- 布局兼容类型的并集
- Qt自定义QPush按钮未显示在布局上
- 根据用户输入用字母填充矢量,并将"开始"和"结束"放在四肢
- 如何正确填充在堆上分配的二维数组?
- 将数字转换为填充字符串
- 有没有办法在一行中填充矢量图
- 用C++中的数字和条件填充向量
- 用真值填充矢量
- 执行匿名结构更改布局和填充
- 是一个哨兵 QWidget 一个好主意(以防止在创建和填充布局时出现内存泄漏)
- Gcc /clang在基结构的后填充中布局派生结构的字段
- 如何在OpenGL中正确填充和对齐std430布局中的数据
- c++.结构在不同平台上的填充/对齐和布局兼容性的自动检查