Advertencia C4341 - 'XX':firmado el valor está fuera del intervalo para el enum constante

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

  •  09-06-2019
  •  | 
  •  

Pregunta

Al compilar mi C++ .Net aplicación puedo obtener 104 advertencias del tipo:

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

Donde XX puede ser

  • WCHAR
  • LARGO
  • POCO
  • BINARIO
  • GUID
  • ...

Me parece que no puede eliminar estas advertencias de lo que puedo hacer.Cuando hago doble clic en ellos me lleva a una parte de mi código que utiliza OdbcParameters - cuando yo trate de un proyecto de prueba con todo el resto de mis cosas, pero no OdbcParameters no dar a las advertencias.

¿Alguna idea de cómo puedo deshacerme de estas advertencias?Están haciendo advertencias reales de código que he escrito duro para ver - y me da una sensación horrible saber que mi aplicación tiene 104 advertencias!

¿Fue útil?

Solución

Este es un error en el compilador.Aquí otro post confirmando que es un problema conocido.Yo tengo el mismo problema en uno de mis proyectos y no hay manera de evitar que se activan a menos que haya alguna manera de evitar el uso de OdbcParameter.La forma más conservadora, para suprimir sólo el buggy advertencias es el uso de

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

// code affected by bug

#pragma warning( pop )

Otros consejos

En Visual Studio siempre se puede deshabilitar las advertencias específicas por ir a:

Configuración del proyecto -> C/C++ -> Avanzado -> Deshabilitar las advertencias Específicas:4341

Esperar a que un compilador de arreglar o no #include el código que se dispara.

[Un detallado manera de decir que probablemente no puede.]

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top