C++ 什么';在MSVC-Wall的标准标题中出现了数千条警告?

C++ 什么';在MSVC-Wall的标准标题中出现了数千条警告?,c++,visual-c++,compiler-warnings,C++,Visual C++,Compiler Warnings,有些人似乎建议您使用-Wall,但当我在一个只有main.cpp和一些include的小测试项目上这样做时,我收到了5800条警告,其中大多数警告出现在标准标题或windows标题中 这是故意的行为吗?我如何让我的编译警告免费 以下是一些阅读乐趣: 1>c:\program files\microsoft visual studio 10.0\vc\include\stdint.h(105): warning C4668: '_INTPTR' is not defined as a pre

有些人似乎建议您使用-Wall,但当我在一个只有main.cpp和一些include的小测试项目上这样做时,我收到了5800条警告,其中大多数警告出现在标准标题或windows标题中

这是故意的行为吗?我如何让我的编译警告免费

以下是一些阅读乐趣:

1>c:\program files\microsoft visual studio 10.0\vc\include\stdint.h(105): warning C4668: '_INTPTR' is not defined as a preprocessor macro, replacing with '0' for '#if/#elif'
1>c:\program files\microsoft visual studio 10.0\vc\include\wchar.h(109): warning C4820: '_wfinddata64i32_t' : '4' bytes padding added after data member '_wfinddata64i32_t::attrib'
1>c:\program files\microsoft visual studio 10.0\vc\include\wchar.h(114): warning C4820: '_wfinddata64i32_t' : '4' bytes padding added after data member '_wfinddata64i32_t::name'
1>c:\program files\microsoft visual studio 10.0\vc\include\wchar.h(118): warning C4820: '_wfinddata64_t' : '4' bytes padding added after data member '_wfinddata64_t::attrib'
1>c:\program files\microsoft visual studio 10.0\vc\include\wchar.h(488): warning C4820: '_stat32' : '2' bytes padding added after data member '_stat32::st_gid'
1>c:\program files\microsoft visual studio 10.0\vc\include\wchar.h(504): warning C4820: 'stat' : '2' bytes padding added after data member 'stat::st_gid'
1>c:\program files\microsoft visual studio 10.0\vc\include\wchar.h(520): warning C4820: '_stat32i64' : '2' bytes padding added after data member '_stat32i64::st_gid'
1>c:\program files\microsoft visual studio 10.0\vc\include\wchar.h(521): warning C4820: '_stat32i64' : '4' bytes padding added after data member '_stat32i64::st_rdev'
1>c:\program files\microsoft visual studio 10.0\vc\include\wchar.h(525): warning C4820: '_stat32i64' : '4' bytes padding added after data member '_stat32i64::st_ctime'
1>c:\program files\microsoft visual studio 10.0\vc\include\wchar.h(534): warning C4820: '_stat64i32' : '2' bytes padding added after data member '_stat64i32::st_gid'
1>c:\program files\microsoft visual studio 10.0\vc\include\wchar.h(548): warning C4820: '_stat64' : '2' bytes padding added after data member '_stat64::st_gid'
1>c:\program files\microsoft visual studio 10.0\vc\include\wchar.h(549): warning C4820: '_stat64' : '4' bytes padding added after data member '_stat64::st_rdev'
1>c:\program files\microsoft visual studio 10.0\vc\include\crtdbg.h(1078): warning C4986: 'operator new[]': exception specification does not match previous declaration
1>          c:\program files\microsoft visual studio 10.0\vc\include\new(79) : see declaration of 'operator new[]'
1>c:\program files\microsoft visual studio 10.0\vc\include\crtdbg.h(1095): warning C4986: 'operator delete[]': exception specification does not match previous declaration
1>          c:\program files\microsoft visual studio 10.0\vc\include\new(77) : see declaration of 'operator delete[]'
1>c:\program files\microsoft visual studio 10.0\vc\include\typeinfo(76): warning C4820: 'type_info' : '3' bytes padding added after data member 'type_info::_M_d_name'
1>c:\program files\microsoft sdks\windows\v7.0a\include\basetsd.h(114): warning C4668: '__midl' is not defined as a preprocessor macro, replacing with '0' for '#if/#elif'
1>c:\program files\microsoft sdks\windows\v7.0a\include\winnt.h(8154): warning C4820: '_SECURITY_QUALITY_OF_SERVICE' : '2' bytes padding added after data member '_SECURITY_QUALITY_OF_SERVICE::EffectiveOnly'
1>c:\program files\microsoft sdks\windows\v7.0a\include\winnt.h(8165): warning C4820: '_SE_IMPERSONATION_STATE' : '2' bytes padding added after data member '_SE_IMPERSONATION_STATE::EffectiveOnly'
1>c:\program files\microsoft sdks\windows\v7.0a\include\winnt.h(8334): warning C4820: '_QUOTA_LIMITS' : '4' bytes padding added after data member '_QUOTA_LIMITS::PagefileLimit'
1>c:\program files\microsoft sdks\windows\v7.0a\include\winnt.h(8357): warning C4820: '_QUOTA_LIMITS_EX' : '4' bytes padding added after data member '_QUOTA_LIMITS_EX::PagefileLimit'
1>c:\program files\microsoft sdks\windows\v7.0a\include\winnt.h(8405): warning C4820: '_JOBOBJECT_BASIC_LIMIT_INFORMATION' : '4' bytes padding added after data member '_JOBOBJECT_BASIC_LIMIT_INFORMATION::SchedulingClass'
1>c:\program files\microsoft sdks\windows\v7.0a\include\winnt.h(8984): warning C4820: '_FILE_NOTIFY_INFORMATION' : '2' bytes padding added after data member '_FILE_NOTIFY_INFORMATION::FileName'
1>c:\program files\microsoft sdks\windows\v7.0a\include\winnt.h(9012): warning C4820: '_REPARSE_GUID_DATA_BUFFER' : '3' bytes padding added after data member '_REPARSE_GUID_DATA_BUFFER::GenericReparseBuffer'
1>c:\program files\microsoft sdks\windows\v7.0a\include\winnt.h(10131): warning C4820: '<unnamed-tag>' : '3' bytes padding added after data member '<unnamed-tag>::Data'
1>c:\program files\microsoft sdks\windows\v7.0a\include\winnt.h(10241): warning C4820: '<unnamed-tag>' : '4' bytes padding added after data member '<unnamed-tag>::DecreaseTime'
1>c:\program files\microsoft sdks\windows\v7.0a\include\winnt.h(10262): warning C4820: '<unnamed-tag>' : '4' bytes padding added after data member '<unnamed-tag>::TimerInterval' 
1>c:\program files\microsoft sdks\windows\v7.0a\include\wincrypt.h(1440): warning C4668: 'NTDDI_WINLH' is not defined as a preprocessor macro, replacing with '0' for '#if/
1>c:\program files\microsoft visual studio 10.0\vc\include\stdint.h(105):警告C4668:“_INTPTR”未定义为预处理器宏,替换为“#if/#elif”的“0”
1> c:\program files\microsoft visual studio 10.0\vc\include\wchar.h(109):警告C4820:“\u wfinddata64i32\u t”:“4”字节填充添加在数据成员“\u wfinddata64i32\u t::attrib”之后
1> c:\program files\microsoft visual studio 10.0\vc\include\wchar.h(114):警告C4820:“\u wfinddata64i32\u t”:“4”字节填充添加在数据成员“\u wfinddata64i32\u t::name”之后
1> c:\program files\microsoft visual studio 10.0\vc\include\wchar.h(118):警告C4820:“\u wfinddata64\u t”:“4”字节填充添加在数据成员“\u wfinddata64\u t::attrib”之后
1> c:\program files\microsoft visual studio 10.0\vc\include\wchar.h(488):警告C4820:“\u stat32”:“2”字节填充添加在数据成员“\u stat32::st\u gid”之后
1> c:\program files\microsoft visual studio 10.0\vc\include\wchar.h(504):警告C4820:“stat”:“2”字节填充添加在数据成员“stat::st_gid”之后
1> c:\program files\microsoft visual studio 10.0\vc\include\wchar.h(520):警告C4820:“\u stat32i64”:“2”字节填充添加在数据成员“\u stat32i64::st\u gid”之后
1> c:\program files\microsoft visual studio 10.0\vc\include\wchar.h(521):警告C4820:“\u stat32i64”:“4”字节填充添加在数据成员“\u stat32i64::st\u rdev”之后
1> c:\program files\microsoft visual studio 10.0\vc\include\wchar.h(525):警告C4820:“\u stat32i64”:“4”字节填充添加在数据成员“\u stat32i64::st\u ctime”之后
1> c:\program files\microsoft visual studio 10.0\vc\include\wchar.h(534):警告C4820:“\u stat64i32”:“2”字节填充添加在数据成员“\u stat64i32::st\u gid”之后
1> c:\program files\microsoft visual studio 10.0\vc\include\wchar.h(548):警告C4820:“\u stat64”:“2”字节填充添加在数据成员“\u stat64::st\u gid”之后
1> c:\program files\microsoft visual studio 10.0\vc\include\wchar.h(549):警告C4820:“\u stat64”:“4”字节填充添加在数据成员“\u stat64::st\u rdev”之后
1> c:\program files\microsoft visual studio 10.0\vc\include\crtdbg.h(1078):警告C4986:“操作员新建[]”:异常规范与以前的声明不匹配
1> c:\program files\microsoft visual studio 10.0\vc\include\new(79):请参阅“operator new[]的声明”
1> c:\program files\microsoft visual studio 10.0\vc\include\crtdbg.h(1095):警告C4986:“操作员删除[]”:异常规范与以前的声明不匹配
1> c:\program files\microsoft visual studio 10.0\vc\include\new(77):参见“操作员删除[]”声明
1> c:\program files\microsoft visual studio 10.0\vc\include\typeinfo(76):警告C4820:“类型信息”:“3”字节填充添加在数据成员“类型信息:”之后
1> c:\program files\microsoft SDK\windows\v7.0a\include\basetsd.h(114):警告C4668:“\uu midl”未定义为预处理器宏,替换为“\if/\elif”的“0”
1> c:\program files\microsoft SDK\windows\v7.0a\include\winnt.h(8154):警告C4820:“\u SECURITY\u QUALITY\u OF\u SERVICE”:“2”字节填充添加在数据成员“\u SECURITY\u QUALITY\u OF\u SERVICE::EffectiveOnly”之后
1> c:\program files\microsoft SDK\windows\v7.0a\include\winnt.h(8165):警告C4820:“\u SE\u IMPERSONATION\u STATE”:“2”字节填充添加在数据成员“\u SE\u IMPERSONATION\u STATE::EffectiveOnly”之后
1> c:\program files\microsoft SDK\windows\v7.0a\include\winnt.h(8334):警告C4820:“\u QUOTA\u LIMITS”:“4”字节填充添加在数据成员“\u QUOTA\u LIMITS::PagefileLimit”之后
1> c:\program files\microsoft SDK\windows\v7.0a\include\winnt.h(8357):警告C4820:“\u QUOTA\u LIMITS\u EX”:“4”字节填充添加在数据成员“\u QUOTA\u LIMITS\u EX::PagefileLimit”之后
1> c:\program files\microsoft SDK\windows\v7.0a\include\winnt.h(8405):警告C4820:“\u JOBOBJECT\u BASIC\u LIMIT\u INFORMATION”:在数据成员“\u JOBOBJECT\u BASIC\u LIMIT\u INFORMATION::SchedulingClass”之后添加了“4”字节填充
1> c:\program files\microsoft SDK\windows\v7.0a\include\winnt.h(8984):警告C4820:“\u FILE\u NOTIFY\u INFORMATION”:“2”字节填充添加在数据成员“\u FILE\u NOTIFY\u INFORMATION::FileName”之后
1> c:\program files\microsoft SDK\windows\v7.0a\include\winnt.h(9012):警告C4820:“\u repasse\u GUID\u DATA\u BUFFER”:“3”字节填充添加在数据成员“\u repasse\u GUID\u DATA\u BUFFER::GenericReparseBuffer”之后
1> c:\program files\microsoft SDK\windows\v7.0a\include\winnt.h(10131):警告C4820:“'3'字节填充添加到数据成员'::数据”
1> c:\program files\microsoft SDK\windows\v7.0a\include\winnt.h(10241):警告C4820:“'4'字节填充添加到数据成员'::DecreaseTime'
1> c:\program files\microsoft SDK\windows\v7.0a\include\winnt.h(10262):警告C4820:“'4'字节填充添加到数据成员'::TimerInterval'
1> c:\program files\microsoft SDK\windows\v7.0a\include\wincrypt.h(1440):警告C4668:“NTDDI\u WINLH”未定义为预处理器宏,如果/

> p> > MSVC使用<代码> /W4< /代码> .< /P> < P> VisualC++ >代码> /Wrime/Coo> >在>/W4中启用默认禁用的所有警告。正如您所发现的,有一个很好的理由可以解释为什么许多警告在默认情况下被禁用(谢谢编译器告诉我您添加了填充;我真的很感激!)。最好在Visual C++上使用<代码> /W4 < /代码> .<

英特尔C++也是这样(我不知道其他使用EDG前端的编译器)。如果您将其设置为

/W5
,它会发出大量信息。我个人最喜欢的是,它会警告你
#pragma warning(push, 0)       
//Some includes with unfixable warnings
#pragma warning(pop)
#pragma warning( push )
#pragma warning( disable : 4081)
#pragma warning( disable : 4706 )
// system header includes 
#pragma warning( pop )
#pragma warning( disable : 4305)
#pragma warning( default : 4305)