C6299
upozornění C6299: explicitní porovnávání bitového pole s typem Boolean může vést k neočekávaným výsledkům
Toto upozornění znamená, že je nesprávně předpokládána ekvivalence typu Boolean a bitových polí.Přidělení hodnoty 1 bitovému poli umístí tuto hodnotu do jediného bitu; při jakémkoliv porovnání tohoto bitového pole s hodnotou 1 však zahrnuje implicitní přetypování bitového pole na typ signed int.Toto přetypování převede uloženou hodnotu 1 na hodnotu -1, díky čemuž může porovnání vést k neočekávaným výsledkům.
Příklad
Následující kód generuje toto upozornění:
struct myBits
{
short flag : 1;
short done : 1;
//other members
} bitType;
void f( )
{
if (bitType.flag == 1)
{
// code...
}
}
Chcete-li opravit toto upozornění, použijte bitové pole tak, jak je ukázáno v následujícím kódu:
void f ()
{
if(bitType.flag==bitType.done)
{
// code...
}
}