Je continue à recevoir cet avertissement d'une bibliothèque tierce (que je ne veux pas déboguer), donc j'apprécierais vraiment manière de supprimer cet avertissement spécifique. Google m'a échoué, alors je suis là.Comment supprimer l'avertissement "type énumérique et non-énumérique dans l'expression conditionnelle" dans GCC
Répondre
Le drapeau suivant ne sera-t-il pas supprimé de cet avertissement?
-Wno-enum-promotion
Eh bien, puisque je ne pouvais pas trouver un moyen de désactiver cet avertissement spécifique, je recours à l'utilisation de system_header #pragma de gcc. Fondamentalement, j'ai enveloppé l'en-tête problématique comme ceci:
#if defined __GNUC__ #pragma GCC system_header #elif defined __SUNPRO_CC #pragma disable_warn #elif defined _MSC_VER #pragma warning(push, 1) #endif #include "foo.h" #if defined __SUNPRO_CC #pragma enable_warn #elif defined _MSC_VER #pragma warning(pop) #endif
où foo.h était l'en-tête problématique. Maintenant, je viens d'inclure ce fooWrapper.h et le problème disparaît. Notez que cela devrait fonctionner aussi pour d'autres compilateurs (MSC et SUNPRO), mais je ne l'ai pas testé.
Thanx, ce '#pragma GCC system_header' m'a sauvé d'un tas d'avertissements non-sens. –
-Wno-enum-compare
contourne cet avertissement.
En gcc4.6 et plus tard, vous pouvez utiliser Pragma pour supprimer des avertissements spécifiques et faire que la suppression uniquement à un bloc de code spécifique, à savoir:
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wno-enum-compare"
// Code that causes warning goes here
#pragma GCC diagnostic pop
Le push/pop sont utilisées pour préserver les options de diagnostic qui étaient en place avant le traitement de votre code.
Ce serait une bien meilleure approche que d'utiliser #pragma GCC system_header
pour supprimer tous les avertissements. (Bien sûr, dans gcc plus vous pouvez être « coincé » avec l'approche #pragma GCC system_header
!)
Voici une belle référence sur la suppression des avertissements gcc: http://www.dbp-consulting.com/tutorials/SuppressingGCCWarnings.html
Cette page décrit également comment utiliser -fdiagnostics-show-option
pour savoir quelle option contrôle un avertissement particulier.
Bien sûr, il est généralement préférable de corriger la cause de tous les avertissements plutôt que de les supprimer! Cependant, parfois ce n'est pas possible.
Non. En fait, gcc ne semble même pas reconnaître cette option. Où avez-vous entendu parler de cette option? Ce n'est pas listé sur http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html –