C6216
更新:2007 年 11 月
警告 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。