C6299
警告 C6299: ビット フィールドとブール型を明示的に比較すると、予期しない結果を生成します
この警告は、ブール値とビット フィールドが同じものであるという誤った想定があることを示します。 ビット フィールドに 1 を割り当てると、1 つのビットに 1 が入力されます。しかし、このビット フィールドを 1 と比較すると、ビット フィールドが暗黙的に符号付き int にキャストされます。 このキャストにより、格納されている 1 は -1 に変換されるため、比較すると予期しない結果が生じる可能性があります。
使用例
この警告が発生するコード例を次に示します。
struct myBits
{
short flag : 1;
short done : 1;
//other members
} bitType;
void f( )
{
if (bitType.flag == 1)
{
// code...
}
}
この警告を解決するには、次のコードに示すようにビット フィールドを使用します。
void f ()
{
if(bitType.flag==bitType.done)
{
// code...
}
}