2008-08-20 158 views
6

当编译我的C++ .NET应用程序,我得到的类型104个警告:警告C4341 - 'XX':符号值超出范围的枚举常量

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

其中xx可以

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

我似乎无法删除这些警告,无论我做什么。当我双击它们时,它会将我带到使用OdbcParameters的代码的一部分 - 任何时候,当我尝试使用其余所有东西但没有OdbcParameters的测试项目时,它不会提供警告。

任何想法如何摆脱这些警告?他们从我实际编写的代码中发出真正的警告 - 这只是给我一种可怕的感觉,因为知道我的应用程序有104条警告!

回答

4

这是一个compiler bug 。这是another post确认这是一个已知的问题。我在其中一个项目中遇到了同样的问题,除非您有避免使用OdbcParameter的方法,否则无法阻止它被触发。仅抑制车警告最保守的方法是使用

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

// code affected by bug 

#pragma warning(pop) 
3

在Visual Studio中,您可以随时转至禁用特定的警告:

项目设置 - > C/C++ - >高级 - >禁用特定的警告:4341

0

要么等待一个编译器修复或不#include代码触发它。

[详细说法可能不会。]