为什么windows.h禁用包警告?

时间:2015-03-31 16:55:28

标签: c++ c windows memory-alignment

windows.h文件中有以下几行:

#ifndef __WINDOWS_DONT_DISABLE_PRAGMA_PACK_WARNING__
#pragma warning(disable:4103)
#endif

我发现在重新订购一些包含文件后我们有pragma pack警告。纠正不良的风险似乎很严重。为什么微软会禁用此警告?

1 个答案:

答案 0 :(得分:5)

请参阅here

本质上,windows.h包含一些子标题,其中许多子标题定义了重新映射某些硬件定义字段的结构(因此,不需要填充)

由于没有在每个子包含上执行推/弹,因此它会禁用4103警告以避免出现虚假警告。

MS本身建议将windows.h作为第一个或最后一个包含,但不要混合它。不是一个很好的选择,但是考虑到windows.h大约25年以上,它定义的一些函数和结构仍然是相同的...而其他一些不能在不破坏现有应用程序的情况下重做。

<windows.h>本身通过确保您不应直接包含的所有相关子标题都包含在正确的顺序中来确保正确的恢复。

如果启用该警告,您将看到所有内部不匹配的windows.h正在屏蔽。

相关问题