共用方式為


C6230

警告 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 ...
  }
}

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

#include <windows.h>

VOID f( )
{
  LPMALLOC pMalloc;
  HRESULT hr = CoGetMalloc(1, &pMalloc);
  
  if (SUCCEEDED(hr))
  {
    
    // code ...
  }
  else
  {
    // code ...
  }
}

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