C6214
Обновлен: Ноябрь 2007
C6214
Предупреждение C6214: приведение между семантически различными целочисленными типами: HRESULT к логическому типу.
Это предупреждение указывает на приведение HRESULT к логическому типу. Значение успешного выполнения (S_OK) для типа HRESULT равно 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.