C6215
upozornění C6215: nádech mezi celé sémanticky různé typy: typu logická hodnota HRESULT
Toto upozornění znamená, že se logická dopadá na HRESULT.Typy logických označovat úspěch nenulová hodnota, že úspěch (S_OK) v HRESULT je označena hodnotou 0.Obsazení booleovské hodnoty typu HRESULT a potom pomocí výrazu test povede nesprávný výsledek.
Toto upozornění často dochází, pokud je logická hodnota použita jako argument SUCCEEDED nebo FAILED makra explicitně vrhá své argumenty HRESULT.
Příklad
Následující kód vygeneruje toto upozornění:
#include <windows.h>
BOOL IsEqual(REFGUID, REFGUID);
void f( REFGUID riid1, REFGUID riid2 )
{
if (SUCCEEDED( IsEqual( riid1, riid2 ) )) //warning 6215
{
// success code ...
}
else
{
// failure code ...
}
}
Obecně SUCCEEDED nebo FAILED makra by měl použít pouze na HRESULT.
Chcete-li opravit toto upozornění, použijte následující kód:
#include <windows.h>
BOOL IsEqual(REFGUID, REFGUID);
void f( REFGUID riid1, REFGUID riid2 )
{
if (IsEqual( riid1, riid2 ) == TRUE)
{
// code for riid1 == riid2
}
else
{
// code for riid1 != riid2
}
}
Další informace naleznete v Bylo úspěšně DOKONČENO makro a se nezdařilo makro