如果我做这个结构
#[repr(C)]
struct Thing {
f1: u128
f2: u32
}
然后我得到的尺寸为 32,对齐方式为 16。
为什么它不是只有 20 个字节,我该如何修复它?
上下文是我正在尝试构建一个结构来表示 MMIO 数据,因此我需要将东西放在正确的位置。
我只是尝试了 repr(packed)。这似乎有效,但文档似乎不鼓励其使用。
答案不是 repr(packed),这确实使尺寸看起来正确,但它只会立即导致对齐问题。
解决方案是使用 repr(C),但只需回顾一下我的一堆结构并找出哪里放错了地方。