范围g ++ pedantic编译

时间:2012-04-18 19:08:04

标签: c++ gcc include gcc-pedantic

是否有可能为某些文件重写-pedantic开关?例如,我使用alsa-lib编译东西,我用标准

来引用
#include <alsa/asoundlib.h>
然而,这个文件上的恐慌恐慌。我愿意和有兴趣纠正我自己的代码中的警告和怪异,但不是在alsa和其他无关的第三方。

有没有办法规范-pedantic用法?

2 个答案:

答案 0 :(得分:3)

通常,GCC会禁止系统标头中的警告,除非您明确指定-Wsystem-headers。通常,来自<>的{​​{1}}附带的文件会被视为系统标头。您的问题建议您专门添加了一些使GCC 将其视为系统标题的内容。您还没有指定您正在使用哪些编译器选项,但是您是否添加了任何可能使/usr/include被视为非系统头目录的无意义-I*选项?

如果所有其他方法都失败了,您可以使用/usr/include实际添加目录作为系统头目录,但您不需要这样做。

编辑:重新阅读问题后,如果您在非标准路径中安装了alsa-lib,那么我不应该使用-isystem选项的说法可能是错误的:它可能正是你所需要的。

答案 1 :(得分:2)

您可以将任何编译密钥扩展到一个编译单元

显然,如果你有多个编译单元,你可以使用不同的密钥来编译它们:

g++ -pedantic file_that_does_not_use_ugly_alsa.cpp
g++ file_that_uses_ugly_alsa.cpp

但是你不能在编译单元中对键进行范围化:代码在编译之前得到预取,所有标题都是内联的,实际上在宏替换之后你可能会发现你的代码使用了一些让编译器恐慌的东西。