我记得这个技巧在过去的某个时候有用,但现在似乎不起作用了。
在 #include
语句周围放置 #pragma warning(push, 0)
实际上并不能阻止 /Wall
从这些语句中生成警告包含文件。
将 /Wall
更改为 /W4
解决了这个问题,但使用 /Wall
似乎被打破了。
#pragma warning(push, 0)
#include <iostream>
#pragma warning(pop)
int main() {
std::cout << "Hello, World!";
}
构建输出:
Microsoft Visual Studio Community 2017 版本 15.5.3
完整的命令行开关(从 cmake 生成):
/GS /TP /analyze- /Wall /Zc:wchar_t /Gm- /O2 /Ob2 /Fd"main.dir\Release\vc141.pdb" /Zc:inline /fp:precise /D "WIN32" /D "_WINDOWS" /D "NDEBUG" /D "CMAKE_INTDIR=\"Release\"" /D "_MBCS" /errorReport:prompt /WX /Zc:forScope /GR /Gd /Oy- /MD /std:c++14 /Fa"Release/" /EHsc /nologo /Fo"main.dir\Release\" /Fp"main.dir\Release\main.pch" /diagnostics:classic
我用谷歌搜索并找到了一个 post这似乎描述了同样的问题,但没有提出解决方案。希望 StackOverflow 上的人们有更好的主意?
最佳答案
这似乎已在 15.9.1 中为我修复。
关于c++ - pragma warning(push, 0) 不禁用/墙警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48412631/