Search code examples
c++gccgcc-warning

Temporarily disable warnings on specific versions of GCC


I have the following situation -

I need to compile my code with two different versions of GCC (3.2 and 4.4) and wish to see all warnings and treat them as errors (it's a slippery slope otherwise). I must include header files I cannot change that include some code. This code makes the newer GCC throw warnings (like unused parameter).

If I add something like

#pragma GCC diagnostic ignored "-Wunused-parameter"
#include <bad_header.hpp>
#pragma GCC diagnostic error "-Wunused-parameter"

it solves the issue with the newer GCC but the older one is not familiar with this pragma and issues a warning (which becomes an error).

What can I do?

  1. Stop treating warning as errors
  2. Surround my pragma with some sort of version checking macro

I don't like both solutions, is there anything else I can do?

Update following Sander De Dycker's answer

My build system does not allow me to use -isystem flag with gcc


Solution

  • The solution I'm going to use for now (until I'll see a better one) is to wrap the GCC diagnostic pragmas with macros to check GCC version, something like

    #if (defined __GNUC__) && (__GNUC__ > 3)
        #pragma GCC diagnostic ignored "-Wunused-parameter"
    #endif
    
        #include <bad_header.hpp>
    
    #if (defined __GNUC__) && (__GNUC__ > 3)
        #pragma GCC diagnostic error "-Wunused-parameter"
    #endif