为空main()生成警告

时间:2016-09-22 00:03:47

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

我在VS 2015上创建了一个默认的空项目,并将警告设置为/Wall。我有一个包含以下内容的单个源文件:

#pragma warning(push, 3)        
#include <functional>
#pragma warning(pop)

//#pragma warning( disable : 4710 )
int main()
{

}

我收到以下错误:

1>c:\users\flatmouse\documents\visual studio 2015\projects\project72\project72\source.cpp(10): warning C4710: 'std::exception_ptr std::exception_ptr::_Current_exception(void) throw()': function not inlined
1>  c:\program files (x86)\microsoft visual studio 14.0\vc\include\exception(299): note: see declaration of 'std::exception_ptr::_Current_exception'
1>c:\users\flatmouse\documents\visual studio 2015\projects\project72\project72\source.cpp(10): warning C4710: 'std::exception_ptr std::current_exception(void) noexcept': function not inlined
1>  c:\program files (x86)\microsoft visual studio 14.0\vc\include\exception(358): note: see declaration of 'std::current_exception'

接下来,我尝试将弹出窗口移到最后一行,将所有源代码的警告级别保持在3:

#pragma warning(push, 3)        
#include <functional>

//#pragma warning( disable : 4710 )
int main()
{

}
#pragma warning(pop)

但我仍然会遇到同样的错误。

为什么还会报告警告?

1 个答案:

答案 0 :(得分:2)

使用Visual C ++时使用/W4,而不是/Wall。后者只是要求大量的愚蠢警告。过去,/W4会对Windows API和C ++标准库头文件发出大量警告,但很高兴在Visual C ++ 2015中不再如此。