我通常使用-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](https://gcc.gnu.org/onlinedocs/gcc/Diagnostic-Pragmas.html) – LPs
不是['-Wno-system-headers'](https:// gcc。 gnu.org/onlinedocs/gcc-5.3.0/gcc/Warning-Options.html#index-Wno-system-headers-437)默認? – DevSolar
@LPs:「這裏」 - 鏈接已被棄用,因爲幾乎是HTML的發明。 「GCC的診斷編譯指南」將是一個很好的鏈接文本。 ;-) – DevSolar