2009-06-19 8 views

Répondre

0

Le drapeau suivant ne sera-t-il pas supprimé de cet avertissement?

-Wno-enum-promotion 
+1

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 –

0

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é.

+0

Thanx, ce '#pragma GCC system_header' m'a sauvé d'un tas d'avertissements non-sens. –

1

-Wno-enum-compare contourne cet avertissement.

See also

1

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.

Questions connexes