警告C4341 - 'XX':符号值超出枚举常量范围

时间:2008-08-20 11:43:50

标签: .net c++ visual-c++

在编译我的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 个答案:

答案 0 :(得分:4)

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

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

// code affected by bug

#pragma warning( pop )

答案 1 :(得分:3)

在Visual Studio中,您始终可以通过转到:

禁用特定警告
  

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

答案 2 :(得分:0)

要么等待编译器修复,要么等待#include触发它的代码。

[一种冗长的说法你可能不会这样做。]