-o change le nom du fichier de sortie (j'ai trouvé qu'en utilisant --help)
Mais je ne peux pas savoir ce que -Wall
Est-ce que?
C'est l'abréviation de "tout avertir" - il active (presque) tous les avertissements dont g ++ peut vous parler. Généralement, c'est une bonne idée, surtout si vous êtes débutant, car la compréhension et la correction de ces avertissements peuvent vous aider à résoudre de nombreux types de problèmes dans votre code.
Voir man gcc.
- Mur active ces avertissements:
-Waddress -Warray-bounds (only with -O2) -Wc++0x-compat -Wchar-subscripts
-Wenum-compare (in C/Objc; this is on by default in C++) -Wimplicit-int (C and
Objective-C only) -Wimplicit-function-declaration (C and Objective-C only)
-Wcomment -Wformat -Wmain (only for C/ObjC and unless -ffreestanding)
-Wmissing-braces -Wnonnull -Wparentheses -Wpointer-sign -Wreorder -Wreturn-type
-Wsequence-point -Wsign-compare (only in C++) -Wstrict-aliasing
-Wstrict-overflow=1 -Wswitch -Wtrigraphs -Wuninitialized -Wunknown-pragmas
-Wunused-function -Wunused-label -Wunused-value -Wunused-variable
-Wvolatile-register-var
- Wextra contient:
-Wclobbered -Wempty-body -Wignored-qualifiers -Wmissing-field-initializers
-Wmissing-parameter-type (C only) -Wold-style-declaration (C only) -Woverride-init
-Wsign-compare -Wtype-limits -Wuninitialized -Wunused-parameter (only with -Wunused
or -Wall) -Wunused-but-set-parameter (only with -Wunused or -Wall)
Il existe de nombreux autres avertissements que vous devez activer explicitement.
Par exemple. pour notre code C, nous utilisons:
-Mur -Wextra -Waggregate-return -Wcast-align -Wcast-qual -Wdisabled-optimisation -Wdiv-by-zero -Wendif-labels -Wformat-extra-args -Wformat-nonliteral -Wformat-security -Wformat-y2k -Wimplicit -Wimport -Winit-self -Winline -Winvalid-pch -Wjump-misses-init -Wlogical-op -Werror = missing-braces -Wmissing-declarations -Wno-missing-format-attribute -Wmissing-include-dirs -Wmultichar -Wpacked -Wpointer-arith -Wreturn-type -Wsequence-point -Wsign-compare -Wstrict-aliasing -Wstrict-aliasing = 2 -Wswitch -Wswitch-default -Werror = undef -Wno-used -Wvariadic-macros -Wwrite-strings -Wc ++ -compat -Werror = déclaration-après-instruction -Werror = déclaration-de-fonction-implicite -Wotyping-prototypes -Werror = nested-externs -Werror = old-style-definition -Werror = strict-prototypes
ou tout simplement l'ensemble des avertissements avec https://www.gnu.org/software/autoconf-archive/ax_compiler_flags.html
Malheureusement, aucune des réponses ne cite la partie réellement pertinente du manuel, ce qui l'amène vraiment à un point:
Cela active tous les avertissements sur les constructions que certains utilisateurs considèrent douteux et qui sont faciles à éviter (ou à modifier pour éviter l'avertissement), même en conjonction avec des macros.
[...]
Notez que certains indicateurs d'avertissement ne sont pas impliqués par
-Wall
. Certains d'entre eux mettent en garde contre les constructions que les utilisateurs ne considèrent généralement pas comme douteuses, mais que vous souhaiterez parfois vérifier; d'autres mettent en garde contre les constructions qui sont nécessaires ou difficiles à éviter dans certains cas, et il n'existe aucun moyen simple de modifier le code pour supprimer l'avertissement. Certains d'entre eux sont activés par-Wextra
mais beaucoup d'entre eux doivent être activés individuellement.
Ergo:
-Wall
ne pas signifie "tous les avertissements".En bout de ligne, il s'agit du minimum absolu d'avertissements que vous devez définir. Tandis que -Wall -Wextra
c'est mieux, il n'utilise toujours pas toutes les erreurs de vérification que votre compilateur peut faire pour vous.
Personnellement, je n'irais pas pour moins de -Wall -Wextra -Wfloat-equal -Wundef -Wcast-align -Wwrite-strings -Wlogical-op -Wmissing-declarations -Wredundant-decls -Wshadow -Woverloaded-virtual
. Tous mes projets actuels utilisent en fait une liste d'avertissements plus longue que cela (sans déclencher aucun d'entre eux). Et je vérifie le manuel sur chaque version majeure pour de nouvelles options. Le compilateur est votre ami. Utilisez tous les diagnostics qu'il peut vous offrir.
Il permet des avertissements jugés utiles et faciles à éviter à la source par les rédacteurs gcc. Il existe également -W (-Wextra dans les versions plus récentes) qui sont jugées utiles mais pour lesquelles contourner les faux positifs peut être difficile ou entraîner un code maladroit.
gcc a également un tas d'autres avertissements, généralement moins utiles. Voir http://gcc.gnu.org/onlinedocs/gcc-4.4.3/gcc/Warning-Options.html#Warning-Options
Il enables most warning messages
.
Vous pouvez en savoir plus si vous utilisez g++ --help=warnings
.
Il active tous les avertissements. (se lit comme "Avertissement à tous")