C6219
Предупреждение C6219: неявное приведение между семантически различными целочисленными типами: сравнение HRESULT с 1 или TRUE. Попробуйте вместо этого использовать макро SUCCEEDED или FAILED
Данное предупреждение означает, что HRESULT сравнивается с явным, не принадлежащим HRESULT значением 1. Это может привести к некорректным результатам, так как типичное значение успеха 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.