C6226
Предупреждение C6226: неявное приведение между семантически различными целочисленными типами: присвоение HRESULT значения -1.Попробуйте вместо этого использовать E_FAIL.
Данное предупреждение указывает, что результату HRESULT явно присваивается значение -1 или он инициализируется этим значением.Это предупреждение часто создается из-за случайного использования целочисленного типа вместо типа HRESULT.Для обозначения успеха следует использовать символьную константу S_OK.Для обозначения неудачи следует использовать символическую константу, начинающуюся со знаков E_.
Для получения дополнительных сведений см. макросы SUCCEEDED и FAILED
Пример
Данное предупреждение создается в следующем коде:
#include <windows.h>
VOID f( )
{
HRESULT hr;
LPMALLOC pMalloc;
if (FAILED(CoGetMalloc(1, &pMalloc)))
{
hr = -1;
// code ...
}
else
{
// code ...
}
}
Для устранения этого предупреждения используйте следующий код:
#include <windows.h>
VOID f( )
{
HRESULT hr;
LPMALLOC pMalloc;
if (FAILED(CoGetMalloc(1, &pMalloc)))
{
hr = E_FAIL;
// code ...
}
else
{
// code ...
}
}
Для данного предупреждения тип SCODE эквивалентен типу HRESULT.
Обратите внимание, что использование malloc и free (и связанных динамических API выделения памяти) имеет много опасностей в терминах утечки памяти и исключений.Чтобы избежать все такие проблемы утечек и исключений, используйте механизмы, предоставляемые библиотекой стандартных шаблонов (STL) C++.Они включают shared_ptr, unique_ptr и vector.Дополнительные сведения см. в разделах Интеллектуальные указатели (современный C++) и Справочник по стандартной библиотеке C++.