Opzioni di avviso di gcc raccomandate per C


Answers

A partire dal 2011-09-01, con gcc versione 4.6.1

Il mio attuale alias "sviluppo"

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

L'alias "release"

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

A partire dal 2009-11-03

"sviluppo" alias

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

"liberatoria" alias

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

Altro che -Wall quali altri avvertimenti hanno trovato utili le persone?

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




-pedantic -Wall -Wextra -Wno-write-string -Wno-unused-parameter

Per la modalità "Hurt me plenty", lascio via il -Wno ...

Mi piace avere il mio codice di avviso gratuito, specialmente con C ++. Mentre gli avvertimenti del compilatore C possono spesso essere ignorati, molti avvisi C ++ mostrano difetti fondamentali nel codice sorgente.




L'avviso sulle variabili non inizializzate non funziona a meno che non specifichi -O , quindi includo quello nella mia lista:

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



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




In questo momento io uso:

-Wall -W -Wextra -Wconversion -Wshadow -Wcast-qual -Wwrite-stringhe -Werror

Ho preso questa lista principalmente dal libro "Un'introduzione a gcc" e poi alcuni da Ulrich Drepper sulla programmazione difensiva ( http://people.redhat.com/drepper/Defensive-slides.pdf ).

Ma non ho alcuna scienza dietro la mia lista, mi è sembrata una buona lista.

/ Johan

Nota: non mi piacciono quelle bandiere pedanti però ....

Nota: penso che -W e -Wextra siano più o meno la stessa cosa.




Io uso anche:

-Wstrict-trabocco = 5

Per catturare quei brutti bug che possono verificarsi se scrivo codice che si basa sul comportamento di overflow degli interi.

E:

-Wextra

Il che abilita alcune opzioni che sono anche belle da avere. La maggior parte sono per C ++ però.




Ho iniziato con C ++, quindi quando ho fatto il passaggio all'apprendimento dell'IC mi sono assicurato di essere extra-anale:

-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



Related