Предупреждение C4341 - "XX":значение со знаком находится вне диапазона для константы enum
-
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
код, который его запускает.
[Многословный способ сказать, что ты, вероятно, не сможешь.]