Предупреждение C4341 - "XX":значение со знаком находится вне диапазона для константы enum

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

  •  09-06-2019
  •  | 
  •  

Вопрос

При компиляции моего C ++.Сетевого приложения я получаю 104 предупреждения типа:

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

Где XX может быть

  • ЧАР
  • ДЛИННЫЙ
  • БИТ
  • ДВОИЧНЫЙ КОД
  • GUID
  • ...

Кажется, я не могу удалить эти предупреждения, что бы я ни делал.Когда я дважды щелкаю по ним, это приводит меня к части моего кода, которая использует OdbcParameters - любой, когда я пробую тестовый проект со всеми остальными моими материалами, но без OdbcParameters, он не выдает предупреждений.

Есть какие-нибудь идеи, как я могу избавиться от этих предупреждений?Они делают реальные предупреждения из кода, который я на самом деле написал, которые трудно разглядеть - и это просто вызывает у меня ужасное чувство, зная, что в моем приложении 104 предупреждения!

Это было полезно?

Решение

Это настоящий ошибка компилятора.Вот еще одно сообщение подтверждаю, что это известная проблема.У меня такая же проблема в одном из моих проектов, и нет никакого способа предотвратить ее срабатывание, если только у вас нет какого-либо способа избежать использования OdbcParameter .Самый консервативный способ подавить только предупреждения об ошибках - это использовать

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

// code affected by bug

#pragma warning( pop )

Другие советы

В Visual Studio вы всегда можете отключить определенные предупреждения, перейдя по ссылке:

Настройки проекта -> C / C ++ -> Дополнительно -> Отключить определенные предупреждения:4341

Либо дождитесь исправления компилятора, либо не делайте этого #include код, который его запускает.

[Многословный способ сказать, что ты, вероятно, не сможешь.]

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top