2008-08-20 111 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代碼觸發它。

[詳細說法可能不會。]