我是否应该关注4级警告?

时间:2015-09-18 19:20:51

标签: c++ visual-studio visual-c++ compiler-warnings

我正在制作一个中型项目(游戏引擎),我曾经认为启用所有警告(/Wall)会很好。然后我看到了大量无用的警告,如:

Warning C4820   '<unnamed-tag>': '3' bytes padding added after data member <unnamed-tag>::Data' DirectX11 Engine    c:\program files (x86)\windows kits\8.1\include\um\winnt.h  14179

然后我决定使用/W4。仍然有很多无用的警告,即使其中一些实际上可以帮助我跟踪错误。一些例子:

Warning C4359   'btContactConstraint': Alignment specifier is less than actual alignment (128), and will be ignored.    BulletDynamics  c:\bullet3-2.83.5\src\bulletdynamics\constraintsolver\btContactConstraint.h 25
Warning C4100   'FirstObject': unreferenced formal parameter    DirectX11 Engine    b:\game engine\directx11 engine\directx11 engine\character.cpp  240

为什么有人会关心4级游戏?我认为4级警告应该被忽略,因为我会花更多时间检查它们,而不是花在跟踪bug上。所以/W3对我来说是完美的。

编辑:当然,在项目结束时,我会使用/W4并查看哪些警告可能意味着有用的东西。

2 个答案:

答案 0 :(得分:1)

是的,不幸的是VS有很多无用的警告。我仍然建议您使用最高级别,然后禁用您不感兴趣的特定警告。您可以从警告中获取良好的信息。例如,编译器抱怨的对齐问题会降低程序的执行速度。由你和你的要求决定是否重要。

答案 1 :(得分:1)

一般情况下,您应该尽可能高地编译警告。即使有些可能看起来毫无用处,有些也不会。正是您正在寻找的警告的理想方面。

当然,你还需要务实,如果代码仍然有效,尽管有警告,暂时忽略它们。如果音量太大,我会采取考虑的方法;随着时间的推移完成警告。

一般来说,警告非常有启发性,它们会导致代码的改进。当我知道忽略忽略它所需的约束时,我也会有选择地关闭警告(例如dll export)。