【发布时间】:2016-07-21 04:41:31
【问题描述】:
我通常使用-Werror 编译我的项目并打开一些警告(如-Wsequence-point -Wcast-align -Wstrict-prototypes -Wstrict-aliasing)。
使用这些设置,在某些平台上,某些标头在包含时会产生警告(由于第一次切换而导致错误)。例如,我在 MacOS 上看到了一些 X11 标头。
我不想降低我的代码的质量标准。有没有办法让我的项目在不全局禁用有问题的警告的情况下编译?例如,有没有办法仅对项目中包含的标头禁用警告?
编辑
这是我试图解决的问题的一个示例:
gcc -std=c99 -pthread -O2 -fstrict-aliasing -I/usr/X11/include -Werror -Wpedantic -Wstrict-aliasing -Wchar-subscripts -Wimplicit -Wsequence-point -Wwrite-strings -Wunused-variable -Wvla -c -o main.o main.c
/usr/X11/include/X11/Xfuncproto.h:145:24: error: named variadic macros are a GNU extension [-Werror,-Wvariadic-macros]
#define _X_NONNULL(args...) __attribute__((nonnull(args)))
【问题讨论】:
-
看看HERE
-
-Wno-system-headers不是默认的吗? -
@LPs:自从 HTML 发明以来,“这里”-链接已被弃用。 “GCC 的诊断编译指示”将是一个很好的链接文本。 ;-)
-
@DevSolar 知道了! ;)
-
stackoverflow.com/q/1867065/1918193 。您如何在系统上获取 X11 标头(默认情况下可用,-I/some/path,某些框架?),您能显示命令行吗?
标签: c gcc include gcc-warning