今天将一个工程升级为 vs2019 64 位编译时出现如下错误:
error C2338: Windows headers require the default packing option. Changing this can lead to memory corruption. This diagnostic can be disabled by building with WINDOWS_IGNORE_PACKING_MISMATCH defined.
问题原因是工程配置中设置了 结构成员 1 字节对齐。
修改方案工程配置即可:
如果需要设置结构体直接对齐,不要在工程配置中设置,因为这里会扰乱其他结构体的直接对齐。对某个结构体需要字节对齐,在代码中使用 #pragma pack 设置即可。