【问题标题】:Warning C4341 - 'XX': signed value is out of range for enum constant警告 C4341 -“XX”:有符号值超出枚举常量的范围
【发布时间】:2010-09-06 06:38:36
【问题描述】:

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

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

XX可以在哪里

  • WCHAR
  • 比特
  • 二进制
  • GUID
  • ...

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

知道如何摆脱这些警告吗?他们正在从我实际上很难看到的代码中发出真正的警告 - 知道我的应用程序有 104 个警告,这让我有一种可怕的感觉!

【问题讨论】:

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


    【解决方案1】:

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

    #pragma warning( push )
    #pragma warning( disable: 4341 )
    
    // code affected by bug
    
    #pragma warning( pop )
    

    【讨论】:

      【解决方案2】:

      在 Visual Studio 中,您始终可以通过以下方式禁用特定警告:

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

      【讨论】:

        【解决方案3】:

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

        [一种冗长的说法,你可能做不到。]

        【讨论】:

          猜你喜欢
          • 2021-09-25
          • 1970-01-01
          • 2017-04-21
          • 2015-03-13
          • 2018-03-23
          • 1970-01-01
          • 1970-01-01
          • 2023-03-27
          • 2018-11-11
          相关资源
          最近更新 更多