2

是否可以限制某些文件的 -pedantic 开关?例如,我使用 alsa-lib 编译东西,我参考标准

#include <alsa/asoundlib.h>

但是 -pedantic 对此文件感到恐慌。我愿意并有兴趣纠正我自己代码中的警告和奇怪之处,但不是 alsa 和其他不相关的第三方。

有没有办法确定 -pedantic 的使用范围?

4

2 回答 2

3

通常,GCC 会抑制系统标头中的警告,除非您明确指定-Wsystem-headers. 通常,包含在<>from中的文件/usr/include被视为系统头文件。您的问题表明您特别添加了一些使 GCC将其视为系统标头的内容。您尚未指定您正在使用哪些编译器选项,但您是否添加了任何-I*可能导致/usr/include被视为非系统头目录的无意义选项?

如果所有其他方法都失败了,您可以使用-isystem将目录实际添加为系统头目录,但您在这里不需要它。

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

于 2012-04-18T21:14:10.707 回答
2

您可以将任何编译键限定为一个编译单元

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

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

但是你不能编译单元内限定键:代码在编译之前被预处理,所有的头文件都是内联的,实际上在宏替换之后你可能会发现你的代码使用了一些东西,这使得编译器恐慌。

于 2012-04-18T19:17:57.083 回答