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 巨集 (英文)。