编译我的 C++ .Net 应用程序时,我收到 104 个以下类型的警告:

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

XX 可以在哪里

  • WCHAR
  • 长的
  • 少量
  • 二进制
  • 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