C6225
警告 C6225: 語意不相同的整數型別之間發生隱含轉型: 將 1 或 TRUE 指派給 HRESULT。請考慮改用 S_FALSE
這則警告表示正在指派 HRESULT 或是以明確的值 1 進行初始化。布林型別是以不為零的值表示成功,而 HRESULT 中的成功 (S_OK) 是以 0 這個值表示。此警告通常是因為布林型別和 HRESULT 型別會在無意間混淆所導致。若要表示成功,應該使用符號常數 S_OK。
範例
在下列程式碼中,指派 HRESULT 會產生這則警告:
#include <windows.h>
VOID f( )
{
HRESULT hr;
LPMALLOC pMalloc;
if (SUCCEEDED(CoGetMalloc(1, &pMalloc)))
{
// code ...
hr = S_OK;
}
else
{
// code ...
hr = 1;
}
}
若要更正這則警告,請使用下列程式碼:
VOID f( )
{
HRESULT hr;
LPMALLOC pMalloc;
if (SUCCEEDED(CoGetMalloc(1, &pMalloc)))
{
hr = S_OK;
// code ...
}
else
{
hr = S_FALSE;
// code ...
}
}
在這個警告中,SCODE 型別相當於 HRESULT。
若要表示失敗,應該使用 E_FAIL 或其他常數。
如需詳細資訊,請參閱下列其中一個主題:
SUCCEEDED (英文)
FAILED (英文)