在 Visual Studio 和 GCC 中,结构体对齐规则是有区别的。
在 Visual Studio 中,默认情况下,结构体的对齐规则遵循下面的规则:
- 结构体的首地址必须是结构体大小的整数倍。
- 结构体的大小必须是最大成员大小的整数倍。
在 GCC 中,默认情况下,结构体的对齐规则遵循下面的规则:
- 结构体的首地址必须是结构体大小的整数倍。
- 结构体的大小必须是所有成员中最宽成员的对齐要求的整数倍。
然而,在两者中都可以使用 #pragma pack 指令来改变结构体的对齐规则。
综上所述,Visual Studio 和 GCC 中的结构体对齐规则是有区别的