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


C6219

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

C6219

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

Это предупреждение означает, что HRESULT сравнивается с явным значением 1, не относящимся к HRESULT. Это может привести к неверным результатом, поскольку типовое значение успешности для HRESULT (S_OK) — 0; при сравнении с логическим типам оно будет неявно преобразовано в false.

Пример

Это предупреждение возникает в следующем примере кода, поскольку CoGetMalloc возвращает значение HRESULT, которое затем сравнивается с TRUE:

#include <windows.h>

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

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

#include <windows.h>

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

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

См. также

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

SUCCEEDED

FAILED