共用方式為


C6216

警告 C6216: 語意不相同的整數類資料型別之間發生編譯器插入的轉型: 布林型別轉型成 HRESULT

這則警告表示是將布林當做 HRESULT 使用,而未明確轉型。布林型別是以不為零的值表示成功,而 HRESULT 中的成功 (S_OK) 是以 0 這個值表示。當做 HRESULT 進行測試時,傳回布林 false 之函式的一般失敗值就是成功狀態。這可能會產生不正確的結果。

範例

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

#include <windows.h>
BOOL IsEqual(REFGUID, REFGUID);

HRESULT f( REFGUID riid1, REFGUID riid2 )
{
  // code ...
  return IsEqual(riid1, riid2);  
}

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

#include <windows.h>
BOOL IsEqual(REFGUID, REFGUID);

HRESULT f( REFGUID riid1, REFGUID riid2 )
{
  if (IsEqual(riid1, riid2) == TRUE)
  {
    // code ...
    return S_OK;
  }
  else
  {
    // code ...
    return E_FAIL;
  }
}

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

如需詳細資訊,請參閱 SUCCEEDED 巨集 (英文) 和 FAILED 巨集 (英文)。