【发布时间】:2021-04-11 15:24:45
【问题描述】:
例如,联合的默认对齐方式如下:
union{
uint32_t v4;
__uint128_t v6;
}ip;
//in memory
//aaaa
//bbbbbbbbbbbbbbbb
但我想让联合右对齐:
// aaaa
//bbbbbbbbbbbbbbbb
是否有可能在 C 中实现这一点?
【问题讨论】:
-
我不确定第一张图是否正确。也许如果你有一个 128 位架构。
-
你会如何使用这样的联合?
-
@dbush 当你在其中保存一个 ipv4 地址时,你可以使用
ip.v6直接获取一个 v6 地址(前 96 位为 0)。但是有个缺陷是需要提前将前96位补0,否则不知道是ipv6地址还是ipv4地址。
标签: c union memory-alignment