MSVC 2015 /Wall 有很多无用的消息
Posted
技术标签:
【中文标题】MSVC 2015 /Wall 有很多无用的消息【英文标题】:MSVC 2015 /Wall has lots of not useful messages 【发布时间】:2016-09-20 20:30:09 【问题描述】:即使我有一个空程序保存包含字符串,即使我禁止包含包含的警告,我仍然会收到很多警告。
复制:
# CMakeLists.txt
add_executable(main main.cpp)
# All warnings, and treat as errors
if(MSVC)
set_target_properties(main PROPERTIES COMPILE_FLAGS "/Wall /WX")
endif()
// main.cpp
#pragma warning(push, 0) // suppress warnings from dependencies
#include <string>
#pragma warning(pop)
int main()
即使这样,我也会收到几页警告,其中第一个是...
main.cpp(8): warning C4710: 'int swprintf_s(wchar_t *const ,const std::size_t,const wchar_t *const ,...)': function not inlined
这是预期的吗?还是我做错了什么?
我应该挑选要禁止的警告,并在我编写的每个文件中禁止它们吗?
或者,我应该选择启用哪些警告吗?但这可能会成为一个冗长乏味的列表,我必须在新的检查可用时维护它。
【问题讨论】:
不要认为警告没有用。修复所有这些以实际提高代码质量。 他不是在开玩笑。在 VS 2010 中启动了他的代码,在\Wall
中添加了另一块砖,MSVC 标准库中出现了数千条警告。
/Wall
有太多无用的警告,我个人认为它没有用。它“警告”一些无害的东西,比如在结构成员之间添加填充。真的吗?从什么时候开始结构成员之间的隐式填充是编程错误?甚至是样式错误?
@Mysticial 我希望 /Wall 警告都没有用。然后我可以使用 /W4 并且很高兴。但事实证明 /Wall 还包括重要的检查,例如“类具有虚函数,但析构函数不是虚的”。
杰夫,我使用的一个技巧是使用多个编译器。如果我只想清理代码,我发现带有 pedantic 的 GCC 是一把好工具。之后我将返回并使用正确的项目工具链构建它。
【参考方案1】:
我查看了那个警告,它指出了这个通常被禁止的警告列表:https://msdn.microsoft.com/en-us/library/23k5d385.aspx。
您可以查看该列表并对您不关心的警告进行全局抑制。我不确定如何进行全局压制。但那个特别的警告似乎没用。
找到有关如何全局禁止警告的链接:https://msdn.microsoft.com/en-us/library/jj715718.aspx。
【讨论】:
我看到了那个页面,我想如果这些警告都不重要,那么我可以坚持使用 /W4。但事实证明,其中很多都是真正有用的。例如,检查“类具有虚函数,但析构函数不是虚函数”就在该列表中。 这不起作用,即使我专门禁用了警告。例如,4514 @JeffM 我认为任何编译器都会有可能无用的警告。但是,如果您觉得有些有用,请禁用那些没有用的。这是一个不常见的任务(也需要在编译器升级时完成)。 @AnonMail 是的,这开始看起来像是我必须做的事情。我将从 /Wall 开始,然后樱桃选择禁用我不关心的东西。以上是关于MSVC 2015 /Wall 有很多无用的消息的主要内容,如果未能解决你的问题,请参考以下文章