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 的值。