How to suppress warnings in external headers in Visual C++

Bob Whiteman picture Bob Whiteman · Mar 30, 2010 · Viewed 25.4k times · Source

I'm starting a new BREW project, and I'd like to compile with Warning Level 4 (/W4) to keep the application code nice and clean. The problem is that the BREW headers themselves don't compile cleanly with /W4.

In gcc you can differentiate between application and system headers by using -I and -isystem, and then by default gcc doesn't report any compilation warnings in system headers. Is there an equivalent mechanism in Visual C++?

Answer

Brian R. Bondy picture Brian R. Bondy · Mar 30, 2010

Only use this method around a block of headers that you cannot change, but that you need to include.

You can selectively, and temporarily disable all warnings like this:

#pragma warning(push, 0)        
//Some includes with unfixable warnings
#pragma warning(pop)

Instead of 0 you can optionally pass in the warning number to disable, so something like:

#pragma warning( push )
#pragma warning( disable : 4081)
#pragma warning( disable : 4706 )
// Some code
#pragma warning( pop )