C6226
Обновлен: Ноябрь 2007
C6226
Предупреждение C6226. Неявное преобразование между целочисленными типами с разной семантикой: присваивание -1 значению типа HRESULT. Попробуйте вместо этого использовать E_FAIL
Данное предупреждение указывает, что результату HRESULT явно присваивается значение -1 или он инициализируется этим значением. Это предупреждение часто создается из-за случайного использования целочисленного типа вместо типа HRESULT. Для обозначения успеха следует использовать символьную константу S_OK. Для обозначения неудачи следует использовать символическую константу, начинающуюся со знаков E_.
Пример
Данное предупреждение создается в следующем коде:
#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.