C6226

更新:2007 年 11 月

警告 C6226:语义不同的整数类型之间的隐式强制转换: 将 -1 赋给 HRESULT。应考虑改用 E_FAIL

此警告意味着为 HRESULT 赋予显式值 -1 或者用显式值 -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。

请参见

其他资源

SUCCEEDED

FAILED