共用方式為


C6226

更新:2007 年 11 月

警告 C6226: 語意不相同的整數型別之間發生隱含轉型: 將 -1 指派給 HRESULT。請考慮改用 E_FAIL

這則警告表示正在指派 HRESULT 或是以明確的值 -1 進行初始化。此警告通常是因為整數型別和 HRESULT 型別會在無意間混淆所導致。若要表示成功,應該使用符號常數 S_OK。若要表示失敗,應該使用開頭為 E_constant 的符號常數。

範例

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

#include <windows.h>

VOID f( )
{
  HRESULT hr;
  LPMALLOC pMalloc;
  
  if (FAILED(CoGetMalloc(1, &pMalloc)))
  {
    hr = -1;
    // code ...
  }
  else
  {
    // code ...
  }
}

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

#include <windows.h>

VOID f( )
{
  HRESULT hr;
  LPMALLOC pMalloc;
  
  if (FAILED(CoGetMalloc(1, &pMalloc)))
  {
    hr = E_FAIL;
    // code ...
  }
  else
  {
    // code ...
  }
}

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

請參閱

其他資源

成功

失敗