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


C6230

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

C6230

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

Данное предупреждение означает, что обычное значение HRESULT используется в контексте (например, в операторе if), в котором требовался логический результат. Это, скорее всего, приведет к неверным результатам. Например, при проверке обычного значения успеха HRESULT (S_OK) в качестве логического значения возвращается значение "false".

Пример

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

#include <windows.h>

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

В большинстве случаев для проверки значения HRESULT следует использовать макрос SUCCEEDED или FAILED. Для устранения этого предупреждения используйте следующий код:

#include <windows.h>

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

Для данного предупреждения тип SCODE эквивалентен значению HRESULT.

См. также

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

SUCCEEDED

FAILED