C6299
uyarı C6299: Boolean türünü açıkça bir bit alanıyla karşılaştırmak, beklenmeyen sonuçlar verir
Bu uyarı, Booleler ve bit alanlarının eşdeğer olduğu gibi yanlış bir varsayım gösterir.Bit alanlarına 1 atama, tek bir bit içinde 1 yer edinilmesini sağlar; ancak, bu bit alanının 1 içeren bit alanı dönüşümü karşılaştırması üstü kapalı bir işaretli tamsayı için bit alanı içerir.Bu yayını saklı 1 -1 olarak dönüştürmek ve karşılaştırmak beklenmeyen sonuçlara yol açabilir.
Örnek
Aşağıdaki kod bu uyarıyı oluşturur:
struct myBits
{
short flag : 1;
short done : 1;
//other members
} bitType;
void f( )
{
if (bitType.flag == 1)
{
// code...
}
}
Bu uyarı düzeltmek için bir bit alanını aşağıdaki kodda gösterildiği gibi kullanın:
void f ()
{
if(bitType.flag==bitType.done)
{
// code...
}
}