Avertissement C4341 - 'XX' :la valeur signée est hors plage pour la constante enum

StackOverflow https://stackoverflow.com/questions/17786

  •  09-06-2019
  •  | 
  •  

Question

Lors de la compilation de mon application C++ .Net, j'obtiens 104 avertissements du type :

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

Où XX peut être

  • WCHAR
  • LONG
  • PEU
  • BINAIRE
  • GUID
  • ...

Je n'arrive pas à supprimer ces avertissements quoi que je fasse.Lorsque je double-clique dessus, cela m'amène à une partie de mon code qui utilise OdbcParameters - quand j'essaie un projet de test avec tout le reste de mes affaires mais pas de OdbcParameters, il ne donne pas d'avertissements.

Avez-vous une idée de comment supprimer ces avertissements ?Ils émettent de véritables avertissements à partir d'un code que j'ai écrit de manière difficile à voir - et cela me donne un sentiment horrible de savoir que mon application contient 104 avertissements !

Était-ce utile?

La solution

C'est un bug du compilateur.Voici un autre message confirmant qu'il s'agit d'un problème connu.J'ai le même problème dans l'un de mes projets et il n'y a aucun moyen de l'empêcher d'être déclenché à moins que vous n'ayez un moyen d'éviter l'utilisation de OdbcParameter.La manière la plus conservatrice de supprimer uniquement les avertissements de bogues est d'utiliser

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

// code affected by bug

#pragma warning( pop )

Autres conseils

Dans Visual Studio, vous pouvez toujours désactiver des avertissements spécifiques en accédant à :

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

Soit attendez un correctif du compilateur, soit ne le faites pas #include code qui le déclenche.

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top