Поделиться через


C6226

Обновлен: Ноябрь 2007

C6226

Предупреждение C6226. Неявное преобразование между целочисленными типами с разной семантикой: присваивание -1 значению типа HRESULT. Попробуйте вместо этого использовать E_FAIL

Данное предупреждение указывает, что результату HRESULT явно присваивается значение -1 или он инициализируется этим значением. Это предупреждение часто создается из-за случайного использования целочисленного типа вместо типа HRESULT. Для обозначения успеха следует использовать символьную константу S_OK. Для обозначения неудачи следует использовать символическую константу, начинающуюся со знаков E_.

Пример

Данное предупреждение создается в следующем коде:

#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