Bonjour,
y'a t-il un moyen avec gcc4.1.2 de ne pas faire apparaitre certains warning a la compilation ?
merci
Bonjour,
y'a t-il un moyen avec gcc4.1.2 de ne pas faire apparaitre certains warning a la compilation ?
merci
quel warning veux tu faire disparaitre?
des warning du type "unused variables ...".
J'ai compilé avec -Wall, je pourrais le désactiver mais tous les autres warning sont importants je veux les voir apparaitre.
Vous pourriez me dire "ben utilises tes variables !!" oui ... mais c'est souvent du code qui ne vas pas forcément être utile tout de suite mais qui le sera a plus ou moins long terme.
merci
ok alors l'option l'option -W te permet d'afficher des warning Wall ( all ) te permet d'afficher tout les warning. il exist cependant d'autre flag comme :
-W
Génère un warning dans les cas suivants :-Wimplicit-int
- pour certaines utilisations délictueuses de setjmp(3) et longjmp(3),
- quand une fonction qui devrait renvoyer une valeur la renvoie dans certains cas et pas d'autres ;
- quand on utilise une expression composée (plusieurs expressions séparées par des virgules), et que certaines expressions dans l'expression composée n'ont pas d'effet sur le résultat final ;
- quand une valeur non signée est comparée avec 0 à l'aide de > ou <= :
- quand une fonction déclare un paramètre sans type et que le compilateur se voit obligé de lui donner le type automatique int
Provoque un warning quand une déclaration ne mentionne pas le type de l'objet déclaré, et oblige le compilateur à choisir le type par défaut int
-Wimplicit-function-declaration
Provoque un warning quand une fonction est utilisée avant d'être déclarée. Dans ce cas, en effet, le compilateur génère automatiquement un prototype pour la fonction utilisée, mais on ne peut jamais être sûr que ce prototype correspond vraiment à la fonction.
-Wimplicit
Synonyme de -Wimplicit-int et -Wimplicit-function-delcaration mis ensemble.
-Wmain
Génère un warning quand la fonction main est déclarée d'une manière bizarre, c'est-à-dire différente de la manière standard. La déclaration standard de la fonction main étant une fonction exportée (donc non statique), de type de retour int, et prenant zéro ou deux arguments.
-Wreturn-type
Génère un warning dans les cas suivants :-Wunused
- une fonction est définie sans type de retour, qui devient automatiquement int,
- une instruction return est invoquée sans argument dans une fonction dont le type de retour n'est pas void
- une fonction de type de retour non-void se termine sans instruction return
Génère un warning quand une variable est déclarée mais jamais utilisée, quand une fonction déclarée static n'est jamais définie, ou quand une instruction effectue un calcul qui n'est pas utilisé par la suite.
-Wswitch
Théoriquement, vu que la norme ne permet pas d'utiliser switch, nous ne devrions pasa voir besoin d'utiliser cette option. Néanmoins, elle reste intéressante : elle génère un warning quand une instruction switch prend une énumération en paramètre mais ne teste pas tous les cas possibles pour cette énumération.
-Wcomment
Génère un warning quand un commentaire contient «/*»
-Wtrigraphs
Génère un warning quand un trigraphe ANSI est utilisé (dans le cas où les trigraphes sont autorisés par -ansi).
-Wformat
Autorise le compilateur à vérifier les arguments de printf(3), scanf(3) et fonctions apparentées, pour vérifier la correspondance entre la chaîne de format indiquée en premier paramètre et les arguments suivants.
-Wchar-subscripts
Avertit quand on utilise une valeur de type char comme indice pour accéder à un tableau.
-O -Wuninitialized
Génère un warning quand on utilise une variable qui n'a peut-être pas encore reçu de valeur. Cette option s'utilise avec (au moins) -O.
-Wparentheses
Génère des warnings à des endroits où le compilateur soupçonne le programmeur d'avoir fait une faute de priorité, ou encore quand la valeur d'une assignation est utilisée comme condition dans un test.
-Wtraditional
Génère des warnings pour certaines constructions qui ont un effet différent en C ANSI qu'en C «traditionnel».
-Wshadow
Provoque un warning quand une déclaration écrase une autre déclaration précédente.
-Wpointer-arith
Provoque des warnings lors de calculs douteux avec des pointeurs.
-Wcast-qual
Cette option semble être activée par défaut. Provoque un warning quand on enlève des attributs d'un pointeur par transtypage.
-Wcast-align
Provoque un warning quand on risque de changer l'alignement d'un type. Ce cas arrive quand on transforme un pointeur sur un type de base en un pointeur sur un type de base plus large, sur les architectures où les types de base doivent être alignés..
-Wwrite-strings
Fait en sorte que les chaînes de caractères soient de type const char[taille]. Ainsi, les tentatives d'accès en écriture dans la chaîne sont détectées. Ces tentatives sont théoriquement illégales, étant donné que les chaînes de caractères sont stoquées dans des parties mémoire en lecture-seule.
-Waggregate-return
Provoque un warning quand une fonction renvoie une structure ou une union
-Wstrict-prototypes
Provoque un warning quand une fonction est déclarée ou définie sans indiquer le type de ses arguments.
-Wmissing-prototypes
Provoque un warning quand une fonction exportée (globale) est définie sans avoir été prototypée auparavant.
-Wmissing-declarations
Comme -Wmissing-prototypes, mais ne nécessite qu'une déclaration (le prototype peut ne pas être complet).
-Wredundant-decls
Provoque un warning quand une fonction est redéclarée, même quand la déclaration est identique.
-Wnested-externs
Provoque un warning quand on importe une variable (ou fonction) globale (à l'aide de export) depuis le corps d'une fonction.
-Werror
Arrête la compilation quand un warning est généré.
Voila bon courage ....
j'ésperais un petit #pragma warning() a la visual ...
en tout cas merci pour la réponse complète je vais voir ca tout de suite
Essaie -Wnounused ou -Wno-unused (avant ou après le -Wall, je ne sais plus).
PS: -Wall est bien loin d'activer tous les Warnings. Une bonne partie ne sont activés qu'avec -Wextra en plus, et même cela ne suffit pas à activer -Wwrite-strings, qu'il faut mettre explicitement.
De plus, beaucoup de warnings n'apparaissent que si l'on tente d'optimiser (-O2 minimum)...
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Partager