例如,联合体的默认对齐方式如下:
union{
uint32_t v4;
__uint128_t v6;
}ip;
//in memory
//aaaa
//bbbbbbbbbbbbbbbb
但我想将一个联合右对齐:
// aaaa
//bbbbbbbbbbbbbbbb
在C语言中能否实现这个功能?
ip.v6
直接获取v6地址(前96位为0)。但是存在一个缺陷,你需要提前用0填充前96位,否则你无法确定它是IPv6地址还是IPv4地址。 - Sam Chiu