2008-08-20 6 views
6

Lors de la compilation mon application .Net C++ je reçois 104 avertissements du type:Avertissement C4341 - 'XX': valeur signée est hors de portée pour ENUM constante

Warning C4341 - 'XX': signed value is out of range for enum constant 

Où XX peut être

  • WCHAR
  • LONG
  • BIT
  • BINARY
  • GUID
  • ...

Je ne peux pas sembler supprimer ces avertissements tout ce que je fais. Quand je double-clique dessus, cela m'amène à une partie de mon code qui utilise OdbcParameters - tout quand j'essaie un projet de test avec tout le reste de mes trucs mais pas d'OdbcParameters cela ne donne pas les avertissements.

Une idée de comment je peux me débarrasser de ces avertissements? Ils font de vrais avertissements à partir du code que j'ai réellement écrit pour voir - et cela me donne un sentiment horrible en sachant que mon application a 104 avertissements!

Répondre

4

C'est un compiler bug . Voici another post confirmant que c'est un problème connu. J'ai le même problème dans un de mes projets et il n'y a aucun moyen de l'empêcher d'être déclenché à moins que vous ayez un moyen d'éviter l'utilisation de OdbcParameter. La façon la plus conservatrice de supprimer uniquement les mises en garde en buggy est d'utiliser

#pragma warning(push) 
#pragma warning(disable: 4341) 

// code affected by bug 

#pragma warning(pop) 
3

Dans Visual Studio, vous pouvez toujours désactiver les avertissements spécifiques en allant à:

paramètres du projet -> C/C++ -> Avancé -> Désactiver les avertissements spécifiques: 4341

0

Soit attendre une solution du compilateur ou le code DonT #include qui le déclenche.

[Une façon verbeuse de dire que vous ne pouvez probablement pas.]

Questions connexes