使用 -Wall 编译 c++ - 来自其他文件的警告

Posted

技术标签:

【中文标题】使用 -Wall 编译 c++ - 来自其他文件的警告【英文标题】:compiling c++ with -Wall - warnings from other files 【发布时间】:2016-02-20 20:35:16 【问题描述】:

今天我尝试使用 -WALL 选项编译我的项目,但我收到了很多警告,例如 600,但似乎都来自标准库文件,例如

项目属性 -> C/C++ -> 常规 -> 警告级别 -> 墙

Warning 14  warning C4820: '_wfinddata64_t' : '4' bytes padding added after data member '_wfinddata64_t::attrib'    c:\program files\microsoft visual studio 11.0\vc\include\wchar.h    118
Warning 15  warning C4820: '_stat32' : '2' bytes padding added after data member '_stat32::st_gid'  c:\program files\microsoft visual studio 11.0\vc\include\wchar.h    507
Warning 16  warning C4820: 'stat' : '2' bytes padding added after data member 'stat::st_gid'    c:\program files\microsoft visual studio 11.0\vc\include\wchar.h    523
Warning 17  warning C4820: '_stat32i64' : '2' bytes padding added after data member '_stat32i64::st_gid'    c:\program files\microsoft visual studio 11.0\vc\include\wchar.h    539
Warning 18  warning C4820: '_stat32i64' : '4' bytes padding added after data member '_stat32i64::st_rdev'   c:\program files\microsoft visual studio 11.0\vc\include\wchar.h    540

这正常吗?为什么我会收到来自其他文件的警告?

【问题讨论】:

您的问题应该包括您正在使用哪个编译器(以及该编译器的哪个版本),最好还包含最少的代码示例 @M.M Visual Studio 2012。这是我使用的类:zedwood.com/article/cpp-sha256-function。和一个非常基本的 hello world 使用这个类,例如哈希计算 @M.M 我记得上次我也发生过类似的事情,但项目不同 this one的可能重复 【参考方案1】:

在 Visual Studio 下,/Wall 实际上生成的警告比任何人都关心的要多 - 通常在调试非常模糊的问题并需要确定是否看到 Visual Studio 错误或非常奇怪的边缘情况时使用它在低级代码中。

您可能应该使用与 GCC/Clang 的 -Wall 大致相当的 /W3。或者 /W4 如果您打算非常勤奋。 /W3 经常会在其他人的代码中显示警告,/W4 会警告一些深奥的东西,比如未引用的形式参数,但也会警告一些有用的情况,比如阴影变量。

【讨论】:

以上是关于使用 -Wall 编译 c++ - 来自其他文件的警告的主要内容,如果未能解决你的问题,请参考以下文章

预编译头文件来自编译器的早期版本,或者预编译头为 C++ 而在 C 中使用它(或相反)

预编译头文件来自编译器的早期版本,或者预编译头为 C++ 而在 C 中使用它(或相反)

VS2005 MFC 预编译头文件来自编译器的早期版本,或者预编译头为 C++ 而在 C 中使用它(或相反)

发出c++代码system()调用外部编译器编译其他c++代码

如何编译 c++ 文件的子集,这样我就不必编译其他文件 MinGW

C 和 C++ 编译器的问题