C6225
upozornění C6225: implicitní přetypování mezi celé sémanticky různé typy: přiřazení 1 nebo PRAVDA na HRESULT.Zvažte použití S_FALSE místo
Toto upozornění znamená, že HRESULT je přiřazen nebo inicializován s hodnotou explicitní 1.Typy logických označují úspěch nenulovou hodnotu; Úspěch (S_OK) v HRESULT je označena hodnotou 0.Toto upozornění často způsobeny náhodným záměně logická a HRESULT typy.Označuje úspěch Symbolická konstanta S_OK by měla být použita.
Příklad
Následující kód přiřazení HRESULT generuje toto upozornění:
#include <windows.h>
VOID f( )
{
HRESULT hr;
LPMALLOC pMalloc;
if (SUCCEEDED(CoGetMalloc(1, &pMalloc)))
{
// code ...
hr = S_OK;
}
else
{
// code ...
hr = 1;
}
}
Chcete-li opravit toto upozornění, použijte následující kód:
VOID f( )
{
HRESULT hr;
LPMALLOC pMalloc;
if (SUCCEEDED(CoGetMalloc(1, &pMalloc)))
{
hr = S_OK;
// code ...
}
else
{
hr = S_FALSE;
// code ...
}
}
Pro toto upozornění SCODE typu je ekvivalentní HRESULT.
Označuje selhání, E_FAIL, nebo by měly být použity jiné konstanta.
Další informace naleznete v následujících tématech: