빌드 할 대상에 따라 다릅니다. 우분투를 들어 내가 할 것 :
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,하지만 난 단지 명시 적으로 설정하려면 :
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
를 커널 개발 자립을 위해, 나는 할 ON으로 설정하면 커맨드 라인이 너무 길지 않아도 아프지 않습니다.
안드로이드 및 iOS의 경우 표준 라이브러리에서 발생하는 노이즈를 줄이려면 몇 가지 경고를 해제 할 수도 있습니다.
과도한 플래그가 많아서 컴파일러가 잘못된 프로그래밍 습관에 정직하게 대처할 수 있을지 모르겠다.
나는 (적어도'-Wall -Wextra -pedantic') 모두를 추천 할 것이고, 고칠 수있는 분별력있는 방법을 찾지 못한다. 그래도 다소 주관적입니다. –
마이크에 동의합니다. 주관적 일지 모르지만 명확한 답변이 있습니다. 경고는 개발자를 돕기 위해 컴파일러에서 최대한 많은 도움을 제공합니다. 경고 수정하기 : –
'-Wall -Wextra -Werror''-Werror'를 잊지 마라. 그렇지 않으면 빌드 스크립트가 (아마 잘못된) 프로그램을 실행하게 될 것이다. – Brandin