Avviso C4341 - 'XX':il valore con segno è fuori intervallo per la costante enum

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

  •  09-06-2019
  •  | 
  •  

Domanda

Durante la compilazione della mia applicazione C++ .Net ricevo 104 avvisi del tipo:

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

Dove può essere XX

  • WCHAR
  • LUNGO
  • MORSO
  • BINARIO
  • GUIDA
  • ...

Non riesco a rimuovere questi avvisi qualunque cosa faccia.Quando faccio doppio clic su di essi, mi porta a una parte del mio codice che utilizza OdbcParameters: quando provo un progetto di test con tutto il resto delle mie cose ma senza OdbcParameters, non fornisce avvisi.

Qualche idea su come posso eliminare questi avvisi?Stanno emettendo avvisi reali dal codice che ho scritto in realtà difficile da vedere - e mi dà una sensazione orribile sapere che la mia app ha 104 avvisi!

È stato utile?

Soluzione

Questo è un bug del compilatore.Ecco un altro post confermando che è un problema noto.Ho riscontrato lo stesso problema in uno dei miei progetti e non c'è modo di impedirne l'attivazione a meno che non si disponga di un modo per evitare l'uso di OdbcParameter.Il modo più conservativo per sopprimere solo gli avvisi difettosi è utilizzare

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

// code affected by bug

#pragma warning( pop )

Altri suggerimenti

In Visual Studio puoi sempre disabilitare avvisi specifici andando su:

Impostazioni progetto -> C/C++ -> Avanzate -> Disabilita Avvisi specifici:4341

O attendi una correzione del compilatore oppure non farlo #include codice che lo attiva.

[Un modo prolisso per dire che probabilmente non puoi.]

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top