共用方式為


C6214

更新:2007 年 11 月

警告 C6214: 語意不相同的整數型別之間發生轉型: HRESULT 轉型成布林型別

這則警告指出 HRESULT 會轉型成布林型別。HRESULT 的成功值 (S_OK) 會等於 0。不過,0 表示布林型別失敗。將 HRESULT 轉型成布林型別,接著於測試運算式中使用,將會產生不正確的結果。有時,如果將 HRESULT 儲存於布林值變數中,也會發生這則警告。任何使用布林值變數來測試 HRESULT 是否成功的比較,都會導致不正確的結果。

範例

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

#include <windows.h>

BOOL f( )
{
  HRESULT hr;
  LPMALLOC pMalloc;
  hr = CoGetMalloc(1, &pMalloc);
  if ((BOOL)hr) // warning 6214
  {
    // success code ...
    return TRUE;
  }
  else
  {
    // failure code ...
    return FALSE;
  }
}

若要更正這則警告,請使用下列程式碼:

#include <windows.h>

BOOL f( )
{
  HRESULT hr;
  LPMALLOC pMalloc;

  hr = CoGetMalloc(1, &pMalloc);
  if (SUCCEEDED(hr)) 
  {
    // success code ...
    return TRUE;
  }
  else
  {
    // failure code ...
    return FALSE;
  }
}

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

SUCCEEDED 或 FAILED 巨集通常必須用於測試 HRESULT 的值。