如果有一个像这样的C
结构
struct abc
{
uint16_t port_no; //2 Bytes
uint8_t src_mac[6]; //6 Bytes
}
编译器如何应用填充来对齐 32 位系统上的 4 字节字:
会吗
2 Bytes
Pad[2]
6 Bytes
Pad[2]
或
2 Byte
6 Byte
最佳答案
这取决于系统的架构。
在 32 位 MIPS 上,您的结构不会有
无论如何填充,因为 uint16_t
必须对齐
甚至地址和 uint8_t 也根本不需要对齐。
然而,struct abc
类型的变量将在
甚至地址,从而最终强制填充到外部
struct(例如,当 struct abc 是周围结构的成员时)。
关于c - 32 位系统中的结构填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51376721/