C6214
Предупреждение C6214: приведение между семантически различными целочисленными типами: HRESULT к логическому типу.
Это предупреждение указывает на приведение HRESULT к логическому типу.Значение, соответствующее успеху (S_OK), для HRESULT равно 0.Однако для логического типа значение 0 означает неудачу.При приведении HRESULT к логическому типу получится неверный результат.В некоторых случаях это предупреждение возникает, если HRESULT хранится в логической переменной.Любое сравнение, в котором логическая переменная используется для проверки успешности или сбоя HRESULT, может быть неверным.
Пример
Данное предупреждение создается в следующем коде:
#include <windows.h>
BOOL f( )
{
HRESULT hr;
LPMALLOC pMalloc;
hr = CoGetMalloc(1, &pMalloc);
if ((BOOL)hr) // warning 6214
{
// success code ...
return TRUE;
}
else
{
// failure code ...
return FALSE;
}
}
Для устранения этого предупреждения используйте следующий код:
#include <windows.h>
BOOL f( )
{
HRESULT hr;
LPMALLOC pMalloc;
hr = CoGetMalloc(1, &pMalloc);
if (SUCCEEDED(hr))
{
// success code ...
return TRUE;
}
else
{
// failure code ...
return FALSE;
}
}
Для данного предупреждения тип SCODE эквивалентен типу HRESULT.
Обычно следует использовать макросы SUCCEEDED и FAILED для проверки значения HRESULT.
Дополнительные сведения см. в одном из следующих разделов.
Чтобы использовать современную методологию выделения памяти C++, используйте механизмы, предоставляемым библиотекой стандартных шаблонов (STL) C++.Они включают shared_ptr, unique_ptr и vector.Дополнительные сведения см. в разделах Интеллектуальные указатели (современный C++) и Справочник по стандартной библиотеке C++.