unsigned short 后 C 结构中的空字节(Visual Studio 2013)

Empy bytes in C struct after unsigned short (Visual Studio 2013)

有人可以解释一下吗?

显然有一个 space 包含两个字节,在字段 a 之后未使用。有人可以告诉我为什么会这样吗?有没有办法 "turn off" 这种行为?我真的需要它才能正常工作。

这是 "working normally"。您的编译器对齐第二个成员 b 以优化速度。在您的平台上 unsigned int 的默认对齐方式是 4 个字节,因此在 a.

之后添加填充字节

要关闭此功能,您可以使用 pragmas depending on your compiler,但不要调用此 "abnormal behavior"。