建議使用 Visual Studio 2017

C6230

 

如需 Visual Studio 2017 的最新文件請參閱 Visual Studio 2017 文件

警告 C6230: 語意不相同的整數型別之間發生隱含轉型: 在布林內容中使用 HRESULT

這則警告表示內容中使用了不包裝的 HRESULT (例如 if 陳述式),其中需要有布林結果。 這可能會產生不正確的結果。 例如,以布林進行測試時,通常 HRESULT (S_OK) 的典型成功值會是 false。

下列程式碼將產生出這個警告:

#include <windows.h>  
  
VOID f( )  
{  
  LPMALLOC pMalloc;  
  HRESULT hr = CoGetMalloc(1, &pMalloc);  
  
  if (hr)  
  {  
  
    // code ...  
  }  
  else  
  {  
    // code ...  
  }  
}  

在大部分情況下, 成功失敗 要使用巨集來測試 HRESULT的值。 若要更正這則警告,請使用下列程式碼:

#include <windows.h>  
  
VOID f( )  
{  
  LPMALLOC pMalloc;  
  HRESULT hr = CoGetMalloc(1, &pMalloc);  
  
  if (SUCCEEDED(hr))  
  {  
  
    // code ...  
  }  
  else  
  {  
    // code ...  
  }  
}  

在這個警告中,SCODE 型別相當於 HRESULT

請注意使用 malloc 和釋放 (及相關的動態配置 API) 有許多意外根據記憶體遺漏和例外狀況。 若要避免這類遺漏和例外狀況的問題,請使用 C++ Standard Template Library (STL) 提供的機制。 其中包括 shared_ptrunique_ptrvector。 如需詳細資訊,請參閱智慧型指標C++ Standard Library

顯示: