我将C ++代码链接到几个库(其中一些是基于标题的库),其中一些库暂时没有更新。我一直在GCC 4.0上使用-Wall
和Wextra
编译我的代码一段时间没有任何警告或错误。但是,现在我正在使用更新版本的GCC(4.3),当库的模板化代码使用{{warning: type qualifiers ignored on function return type
时,我的一些文件已经从其他库的包含文件中打印出警告(例如,restrict
1}}返回指针上的关键字)。同样,我正在使用的群集上的一个稍微旧版本的OpenMPI在使用GCC 4.1编译时会打印出许多警告。
问题是:在离开本地目录读取头文件时,是否可以执行任何操作来禁用其他人员代码中的 警告?我想让我的代码尽可能干净和正确(因此,我启用所有警告),但如果我的make进程因我无法修复的问题而混乱,目的就会失败。我是否只需全局禁用其代码中出现的特定警告?
答案 0 :(得分:4)
我想到的一件事是在命名include目录时使用-isystem
而不是-I
。这会将其视为系统标题,这意味着gcc不会对其中的内容显示任何警告。
我不确定gcc是否会开始给他们一些其他治疗方法。首先检查gcc文档,以确保安全。
答案 1 :(得分:3)
查看这个类似问题的答案:
Conditionally disable warnings with qmake/gcc?
我的建议是通过您自己的包装器标头间接包含第三方标头,并在这些标头中使用编译指示切换警告,然后在第三方标头的#includes之后重新打开。
答案 2 :(得分:1)
另一个类似的问题: Is there a way to disable all warnings with a pragma?
我并不担心第三方图书馆中的任何警告,所以根据链接帖子中的描述完全忽略它们。工作得特别好,因为所有包含都在预编译的标题内。
编辑:哎呀,#pragma警告只是VC ++?