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.