我有以下情况-
我需要使用两个不同版本的 GCC(3.2 和 4.4)编译我的代码,并希望看到所有警告并将它们视为错误(否则就是一个滑坡)。我必须包含我无法更改的头文件,其中包含一些代码。此代码使较新的 GCC 抛出警告(如未使用的参数)。
如果我添加类似的东西
#pragma GCC diagnostic ignored "-Wunused-parameter"
#include <bad_header.hpp>
#pragma GCC diagnostic error "-Wunused-parameter"
它解决了较新的 GCC 的问题,但较旧的 GCC 不熟悉此 pragma 并发出警告(成为错误)。
我能做什么?
- 停止将警告视为错误
- 用某种版本检查宏包围我的 pragma
我不喜欢这两种解决方案,我还能做些什么吗?
根据 Sander De Dycker 的回答更新
我的构建系统不允许我在 gcc 中使用 -isystem 标志
最佳答案
由于您只想抑制不受您控制的 header 的警告,您可以使用 -isystem
将这些 header 标记为系统 header 。而不是 -I
,gcc 将不再为它们生成警告 (how gcc treats system headers)。
关于c++ - 暂时禁用特定版本 GCC 的警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20402874/