次の方法で共有


警告 C6299

ビット フィールドをブール型と明示的に比較すると、予期しない結果が得られます

解説

この警告は、ブール値とビット フィールドが同値であるという誤った想定を示しています。 ビット フィールドに 1 を割り当てると、1 つのビットに 1 が配置されます。ただし、このビット フィールドを 1 と比較すると、符号付き整数へのビット フィールドの暗黙的なキャストが含まれます。このキャストは、格納されている 1 を -1 に変換し、比較によって予期しない結果が生成される可能性があります。

コード分析名: BITFIELD_TO_BOOL_COMPARISON

この警告が発生するコード例を次に示します。

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...
  }
}