使用 -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++代码