C [closed]에 대한 권장 gcc 경고 옵션



6 Answers

2011-09-01 현재 gcc 버전 4.6.1

내 현재 "개발"별칭

gcc -std=c89 -pedantic -Wall \
    -Wno-missing-braces -Wextra -Wno-missing-field-initializers -Wformat=2 \
    -Wswitch-default -Wswitch-enum -Wcast-align -Wpointer-arith \
    -Wbad-function-cast -Wstrict-overflow=5 -Wstrict-prototypes -Winline \
    -Wundef -Wnested-externs -Wcast-qual -Wshadow -Wunreachable-code \
    -Wlogical-op -Wfloat-equal -Wstrict-aliasing=2 -Wredundant-decls \
    -Wold-style-definition -Werror \
    -ggdb3 \
    -O0 \
    -fno-omit-frame-pointer -ffloat-store -fno-common -fstrict-aliasing \
    -lm

"릴리스"별명

gcc -std=c89 -pedantic -O3 -DNDEBUG -flto -lm

2009-11-03 현재

"개발"별명

gcc -Wall -Wextra -Wformat=2 -Wswitch-default -Wcast-align -Wpointer-arith \
    -Wbad-function-cast -Wstrict-prototypes -Winline -Wundef -Wnested-externs \
    -Wcast-qual -Wshadow -Wwrite-strings -Wconversion -Wunreachable-code \
    -Wstrict-aliasing=2 -ffloat-store -fno-common -fstrict-aliasing \
    -lm -std=c89 -pedantic -O0 -ggdb3 -pg --coverage

"릴리스"별명

gcc -lm -std=c89 -pedantic -O3 -DNDEBUG --combine -fwhole-program -funroll-loops
Question

기타 - 사람들이 유용한 다른 경고는 무엇입니까?

http://gcc.gnu.org/onlinedocs/gcc-4.3.2/gcc/Warning-Options.html




-pedantic -Wall -Wextra -Write-string -Word-unused-parameter

"나를 많이 상처 입는다"모드에서, 나는 그만 둔다.

나는 내 코드가 특히 C ++로 경고를 받고 싶어한다. C 컴파일러 경고는 종종 무시 될 수 있지만 많은 C ++ 경고는 소스 코드에 근본적인 결함을 보여줍니다.




-O 를 지정하지 않으면 초기화되지 않은 변수에 대한 경고가 작동하지 않으므로이를 내 목록에 포함합니다.

-g -O -Wall -Werror -Wextra -pedantic -std=c99



나는 또한 다음을 사용한다.

-Width-overflow = 5

정수의 오버플로 동작에 의존하는 코드를 작성하면 발생할 있는 불쾌한 버그를 잡으려고합니다.

과:

-Wextra

어떤 옵션을 사용하면 좋을 것입니다. 대부분은 C ++ 용입니다.




저는 C ++로 시작 했으므로 CI를 배우기 위해 전환 할 때 여분의 항문이되어야했습니다.

-fmessage-length=0
-ansi -pedantic -std=c99
-Werror
-Wall
-Wextra
-Wwrite-strings
-Winit-self
-Wcast-align
-Wcast-qual
-Wpointer-arith
-Wstrict-aliasing
-Wformat=2
-Wmissing-declarations
-Wmissing-include-dirs
-Wno-unused-parameter
-Wuninitialized
-Wold-style-definition
-Wstrict-prototypes
-Wmissing-prototypes



지금은 다음을 사용합니다.

-Wall -W -Wextra -Wconversion -Wshadow -Wcast-qual -Write-strings -Werror

그 목록은 주로 "gcc 소개"에서 나온 다음 방어 프로그래밍 ( Ulrich Drepper recomendation)에서 가져온 것입니다 ( http://people.redhat.com/drepper/Defensive-slides.pdf ).

그러나 나는 나의 목록 뒤에 어떤 과학도 가지지 않고있다, 그것은 단지 좋은 목록 인 것 같은 느낌이 들었다.

/ 요한

참고 : 나는 그런 페낭 식 깃발을 좋아하지 않습니다 ....

참고 : 나는 -W와 -Wextra가 어느 정도 동일한 것이라고 생각한다.




-Wfloat-equal, -Wshadow, -Wissing-prototypes,






Related