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


C6225

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

C6225

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

Это предупреждение указывает, что HRESULT присваивается явное значение 1 (или выполняется инициализация с этим значением). В логических типах успешный результат обозначается ненулевым значением; успешный результат (S_OK) в HRESULT указывается значением 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 или другую константу.

См. также

Другие ресурсы

УСПЕШНО

СБОЙ