Предупреждение C4341 - «XX»: значение со знаком выходит за пределы диапазона для константы перечисления - PullRequest
6 голосов
/ 20 августа 2008

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

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

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

  • WCHAR
  • LONG
  • BIT
  • BINARY
  • GUID
  • ...

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

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

Ответы [ 3 ]

4 голосов
/ 20 августа 2008

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

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

// code affected by bug

#pragma warning( pop )
3 голосов
/ 20 августа 2008

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

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

0 голосов
/ 21 августа 2008

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...