C6225
Предупреждение C6225: неявное приведение между семантически различными целочисленными типами: присвоение HRESULT значения 1 или TRUE. Попробуйте вместо этого использовать S_FALSE.
Данное предупреждение указывает, что типу HRESULT явно присваивается значение 1 или он инициализируется этим значением. Логические типы указывают успех посредством ненулевого значения; успех (S_OK) в HRESULT обозначается значением 0. Это предупреждение часто создается из-за случайного использования логического типа вместо типа HRESULT. Для обозначения успешного результата следует использовать символьную константу S_OK.
Пример
В следующем коде это предупреждение возникает из-за присвоения HRESULT:
#include <windows.h>
VOID f( )
{
HRESULT hr;
LPMALLOC pMalloc;
if (SUCCEEDED(CoGetMalloc(1, &pMalloc)))
{
// code ...
hr = S_OK;
}
else
{
// code ...
hr = 1;
}
}
Для устранения этого предупреждения используйте следующий код:
VOID f( )
{
HRESULT hr;
LPMALLOC pMalloc;
if (SUCCEEDED(CoGetMalloc(1, &pMalloc)))
{
hr = S_OK;
// code ...
}
else
{
hr = S_FALSE;
// code ...
}
}
Для данного предупреждения тип SCODE эквивалентен значению HRESULT.
Для обозначения сбоя следует использовать E_FAIL или другую константу.
Дополнительные сведения см. в одном из следующих разделов.