暂时禁用特定版本GCC的警告

Vad*_*dim 1 c++ gcc gcc-warning

我有以下情况 -

我需要用两个不同版本的GCC(3.2和4.4)编译我的代码,并希望看到所有警告并将它们视为错误(否则它是一个滑坡).我必须包含我无法更改的头文件,包括一些代码.此代码使较新的GCC抛出警告(如未使用的参数).

如果我添加类似的东西

#pragma GCC diagnostic ignored "-Wunused-parameter"
#include <bad_header.hpp>
#pragma GCC diagnostic error "-Wunused-parameter"
Run Code Online (Sandbox Code Playgroud)

它解决了较新的GCC的问题,但旧的不熟悉这个pragma并发出警告(这成为一个错误).

我能做什么?

  1. 停止将警告视为错误
  2. 使用某种版本检查宏来环绕我的pragma

我不喜欢这两种解决方案,还有什么我可以做的吗?

更新了Sander De Dycker的回答

我的构建系统不允许我在gcc中使用-isystem标志

San*_*ker 5

由于您只想抑制来自您无法控制的标题的警告,您可以使用-isystem而不是将这些标题标记为系统标题-I,并且gcc将不再为它们生成警告(gcc如何处理系统标题).