我最近從gcc-4.2.4移到了gcc-4.8.1。在gcc-4.8.1的O2優化級別推薦的gcc警告選項是什麼?gcc-4.8.1中O2優化級別的推薦警告標記
我一直在gcc-4.2.4中使用以下警告標誌: -Wall -Wno-括號-Wpointer-arith -Wcast-align -Wign-compare -Wnon-virtual-dtor -Wnon-template-friend - Woverloaded虛擬-Wsign宣傳
我最近從gcc-4.2.4移到了gcc-4.8.1。在gcc-4.8.1的O2優化級別推薦的gcc警告選項是什麼?gcc-4.8.1中O2優化級別的推薦警告標記
我一直在gcc-4.2.4中使用以下警告標誌: -Wall -Wno-括號-Wpointer-arith -Wcast-align -Wign-compare -Wnon-virtual-dtor -Wnon-template-friend - Woverloaded虛擬-Wsign宣傳
我促進公約是:
-Wall -Wextra -pedantic
訪問有關詳細信息,GCC文檔其具體標誌這開啓。
這是一個相當簡約的方法,他提到的許多標誌都不會啓用。 –
@KolyolyHorvath:根本不是「簡約」。他問:「在gcc-4.8.1的O2優化級別推薦的gcc警告選項是什麼?」,而不是「我現在列出的GCC警告選項是什麼?」如果他想增加更多,他肯定會受到歡迎,但我建議不要這樣做,除非您知道需要某些特定原因。 –
我看到的任何嚴肅(開源)項目至少使用了十多個標誌,所以如果這是您的建議,那麼是的,我覺得它很簡約。 –
取決於您想要構建的目標。 Ubuntu的我會做:
CWARN =-Wall -Wextra -Wattributes -Wbuiltin-macro-redefined -Wcast-align -Wconversion -Wdeclaration-after-statement \
-Wdiv-by-zero -Wdouble-promotion -Wenum-compare -Wfloat-equal -Wimplicit-int -Winit-self -Wint-to-pointer-cast \
-Wjump-misses-init -Wlogical-op -Wmissing-braces -Wmissing-field-initializers -Wmissing-parameter-type \
-Woverflow -Wpointer-arith -Wpointer-sign -Wpointer-to-int-cast -Wredundant-decls -Wreturn-type -Wshadow \
-Wsign-compare -Wtype-limits -Wuninitialized -Wwrite-strings \
-Wno-unused-parameter -Wno-multichar -Wno-strict-aliasing
CXXWARN =-Wall -Wextra -Wattributes -Wbuiltin-macro-redefined -Wc++0x-compat -Wcast-align -Wconversion -Wdiv-by-zero \
-Wdouble-promotion -Wenum-compare -Wfloat-equal -Winit-self -Wint-to-pointer-cast -Wlogical-op -Wmissing-braces \
-Wmissing-field-initializers -Woverflow -Wpointer-arith -Wredundant-decls -Wreturn-type -Wshadow -Wsign-compare \
-Wsign-promo -Wtype-limits -Wuninitialized -Wwrite-strings \
-Wno-unused-parameter -Wno-multichar -Wno-strict-aliasing
對於獨立內核開發的,我做的:
CWARN =-Wall -Wextra -Wattributes -Wbuiltin-macro-redefined -Wcast-align -Wconversion \\
-Wdiv-by-zero -Wdouble-promotion -Wenum-compare -Wfloat-equal -Winit-self \\
-Wint-to-pointer-cast -Wlogical-op -Wmissing-braces -Wmissing-field-initializers \\
-Woverflow -Wpointer-arith -Wredundant-decls -Wreturn-type -Wshadow -Wsign-compare \\
-Wtype-limits -Wuninitialized -Wwrite-strings \\
-Wno-unused-parameter -Wno-unused-variable -Wno-multichar -Wno-unused-but-set-variable \\
-Wdeclaration-after-statement -Wimplicit-int -Wjump-misses-init -Wpointer-sign \\
-Wpointer-to-int-cast -Wmissing-parameter-type
CXXWARN =-Wall -Wextra -Wattributes -Wbuiltin-macro-redefined -Wcast-align -Wconversion \\
-Wdiv-by-zero -Wdouble-promotion -Wenum-compare -Wfloat-equal -Winit-self \\
-Wint-to-pointer-cast -Wlogical-op -Wmissing-braces -Wmissing-field-initializers \\
-Woverflow -Wpointer-arith -Wredundant-decls -Wreturn-type -Wshadow -Wsign-compare \\
-Wtype-limits -Wuninitialized -Wwrite-strings \\
-Wno-unused-parameter -Wno-unused-variable -Wno-multichar -Wno-unused-but-set-variable \\
-Wc++0x-compat -Wsign-promo
一些警告的是與-Wextra或朋友,但我只是想明確地將它們ON,如果命令行不太長,它也不會受到傷害。
Android和iOS您可能還需要關閉一些警告,從標準庫減少噪音。
萬一你可能不知道的是,有很多標誌是矯枉過正,但它使編譯器是誠實的任何不好的編程習慣,它可能不是來自你,但是從你的隊友。
我建議所有的人(至少'-Wall -Wextra -pedantic'),只有禁用任何你真的不能找到一個合理的方式來解決。不過,這有點主觀。 –
我同意邁克,這可能是主觀的,但有一個明確的答案:警告有幫助開發人員,讓編譯器儘可能幫助你。修復警告:) –
'-Wall -Wextra -Werror'不要忘了'-Werror'否則你的構建腳本會繼續運行您的(可能不正確)程序 – Brandin