MSVC - stop warnings in headers

2020-03-17 02:50发布

I'm using MSVC with a CMaked project. As a result, I've enabled many of the flags on MSVC which were enabled for gcc and clang. However, the /Wall warning level is giving me some pain; it warns me about all kinds of things in included headers, like stdio.h and boost headers. Is there a way to stop MSVC from warning me about things in headers? I like my warning levels, but I only want them enabled for me.

3条回答
迷人小祖宗
2楼-- · 2020-03-17 03:08

/Wall is very pedantic. /W4 is probably all you really need. To answer your question, you can disable specific warnings around your headers with:

 #pragma warning(disable:xxxx)
 #include <yourheader.h>
 #pragma warning(default:xxxx)

Or change the warning level with:

 #pragma warning(push,3)
 #include <yourheader.h>
 #pragma warning(pop)

See the MSDN documentation: http://msdn.microsoft.com/en-us/library/2c8f766e.aspx

查看更多
趁早两清
3楼-- · 2020-03-17 03:15

You can disable specific warnings using the /wdXXXX flag where XXXX is the number of the warnings you wish to ignore. No need to modify the code.

查看更多
狗以群分
4楼-- · 2020-03-17 03:19

Mark Tolonen has already point out /W4.

If that still produces warnings, e.g. you're using an older MSVC version like 7.1, or you're using some 3rd party library that still produces warnings about perfectly good code, and you're aiming for clean compiles, then see my msvc silly-warning suppression header.

It's been through a few rounds of community review, in the comp.lang.c++ Usenet group, but it may/will need updating as Microsoft adds even more silly-warnings in new compiler versions… ;-)

查看更多
登录 后发表回答