Rui*_*rch 4 c union memory-alignment
例如,联合的默认对齐方式如下:
union{
uint32_t v4;
__uint128_t v6;
}ip;
//in memory
//aaaa
//bbbbbbbbbbbbbbbb
Run Code Online (Sandbox Code Playgroud)
但我想让工会正确对齐:
// aaaa
//bbbbbbbbbbbbbbbb
Run Code Online (Sandbox Code Playgroud)
是否有可能在 C 中实现这一点?
您可以为此使用 C11 匿名结构。
union {
#pragma pack(1)
struct {
char padding_[sizeof(__uint128_t) - sizeof(uint32_t)];
uint32_t v4;
};
#pragma pack(0)
__uint128_t v6;
} ip;
// usage
ip.v4 = 0x7F000000;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
95 次 |
| 最近记录: |