C6225
Обновлен: Ноябрь 2007
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 или другую константу.