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


C6226

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

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

Дополнительные сведения см. в макросах SUCCEEDED и FAILED.

Пример

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

#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.