其他人库中的编译器警告

时间:2009-07-22 15:30:45

标签: c++ gcc warnings

我将C ++代码链接到几个库(其中一些是基于标题的库),其中一些库暂时没有更新。我一直在GCC 4.0上使用-WallWextra编译我的代码一段时间没有任何警告或错误。但是,现在我正在使用更新版本的GCC(4.3),当库的模板化代码使用{{warning: type qualifiers ignored on function return type时,我的一些文件已经从其他库的包含文件中打印出警告(例如,restrict 1}}返回指针上的关键字)。同样,我正在使用的群集上的一个稍微旧版本的OpenMPI在使用GCC 4.1编译时会打印出许多警告。

问题是:在离开本地目录读取头文件时,是否可以执行任何操作来禁用其他人员代码中的 警告?我想让我的代码尽可能干净和正确(因此,我启用所有警告),但如果我的make进程因我无法修复的问题而混乱,目的就会失败。我是否只需全局禁用其代码中出现的特定警告?

3 个答案:

答案 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 ++?