87 votes

Options d'avertissement recommandées de gcc pour C

Autre que -Wall, quels autres avertissements les gens ont-ils trouvé utiles?

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

50voto

Jonathan Leffler Points 299946

J'utilise régulièrement:

     gcc -m64 -std=c99 -pedantic -Wall -Wshadow -Wpointer-arith -Wcast-qual \
        -Wstrict-prototypes -Wmissing-prototypes
 

Cet ensemble attire beaucoup de gens habitués (personnes dont je compile le code avec ces drapeaux pour la première fois); cela me pose rarement un problème (bien que -Wcast-qual soit occasionnellement une nuisance).

47voto

pmg Points 52636

Comme de 2011-09-01, avec gcc version 4.6.1

Mon "développement" alias

gcc-std=c89 -pedantic -Wall \
 -Wno-missing-croisillons -Wextra -Wno-missing-champ-des initialiseurs -Wformat=2 \
 -Wswitch-par défaut -Wswitch-enum-Wcast-align Wpointer-arith \
 -Wbad-fonction-cast -Wstrict-débordement=5 -Wstrict-prototypes -Ligne \
 -Wundef -Wnested-externes -Wcast-qual-Wshadow -Wunreachable-code \
 -Wlogical-op -Wfloat-égalité -Wstrict-aliasing=2 -Wredundant-decls \
 -Wold-style-définition -Werror \
 -ggdb3 \
 -O0 \
 -fno-omit-frame-pointer -ffloat-magasin -fno-commune -fstrict-aliasing \
-lm

La "libération" alias

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

Comme de 2009-11-03

le "développement" alias

gcc -Wall-Wextra -Wformat=2 -Wswitch-par défaut -Wcast-align Wpointer-arith \
 -Wbad-fonction-cast -Wstrict-prototypes -Ligne -Wundef -Wnested-externs \
 -Wcast-qual-Wshadow -Wwrite-strings -Wconversion -Wunreachable-code \
 -Wstrict-aliasing=2 -ffloat-magasin -fno-commune -fstrict-aliasing \
 -lm -std=c89 -pedantic -O0 -ggdb3 -pg --couverture

"libération" alias

gcc-lm -std=c89 -pedantic -O3-DNDEBUG-combiner -fwhole-programme -funroll-loops

17voto

Tom Points 6758

J'ai commencé avec le C ++, donc quand j'ai commencé à apprendre CI, je me suis assuré d'être extra-anal:

-fmessage-length = 0
-ansi -pedantic -std = c99
-Werror
-Mur
-Wextra
-Écriture de chaînes
-Winit-self
-Wcast-align
-Wcast-qual
-Wpointer-arith
-String-aliasing
-Wformat = 2
-Missions déclarées
-Wmissing-include-dirs
Paramètre -Non-non utilisé
-Wuninitialisé
-Wold-style-definition
-Protection-prototypes
Prototypes manquants

15voto

JesperE Points 34356

J'aime -Werror. Garde le code sans avertissement.

10voto

DevSolar Points 18897

Obtenir le manuel de la version de GCC que vous utilisez, trouvez tous les avertissements options disponibles, puis désactiver uniquement ceux pour lesquels vous avez une impérieuse raison de le faire. (Par exemple, non modifiables tiers-têtes qui vous donnent beaucoup de mises en garde contraire.) Document de ces raisons. (Dans le Makefile ou partout où vous définissez les options.) Passez en revue les paramètres, à intervalles réguliers, et à chaque fois que vous mettez à niveau votre compilateur.

Le compilateur est votre ami. Mises en garde sont à votre ami. Donner le compilateur autant de chance de te parler des problèmes potentiels que possible.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X