Aviso C4341 - 'XX':o valor assinado está fora do intervalo para constante enum

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

  •  09-06-2019
  •  | 
  •  

Pergunta

Ao compilar meu aplicativo C++ .Net, recebo 104 avisos do tipo:

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

Onde XX pode estar

  • WCHAR
  • LONGO
  • PEDAÇO
  • BINÁRIO
  • GUIA
  • ...

Não consigo remover esses avisos, faça o que fizer.Quando clico duas vezes neles, sou levado a uma parte do meu código que usa OdbcParameters - quando tento um projeto de teste com todo o resto das minhas coisas, mas sem OdbcParameters, ele não fornece avisos.

Alguma ideia de como posso me livrar desses avisos?Eles estão fazendo avisos reais a partir de códigos que escrevi com dificuldade de ver - e me dá uma sensação horrível saber que meu aplicativo tem 104 avisos!

Foi útil?

Solução

Isto é um bug do compilador.Aqui está outra postagem confirmando que é um problema conhecido.Eu tenho o mesmo problema em um dos meus projetos e não há como evitar que ele seja acionado, a menos que você evite o uso de OdbcParameter.A maneira mais conservadora de suprimir apenas os avisos de bugs é usar

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

// code affected by bug

#pragma warning( pop )

Outras dicas

No Visual Studio você sempre pode desabilitar avisos específicos acessando:

Configurações do projeto -> C/C++ -> Avançado -> Desativar avisos específicos:4341

Espere por uma correção do compilador ou não #include código que o aciona.

[Uma maneira detalhada de dizer que você provavelmente não consegue.]

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top