Share via


C6299

경고 C6299: 명시적으로 비트 필드를 부울 형식과 비교하면 예기치 않은 결과가 발생할 수 있습니다.

이 경고는 부울과 비트 필드를 서로 동등한 것으로 잘못 가정하고 있음을 나타냅니다. 비트 필드에 1을 할당하면 단일 비트에 1이 놓이지만 이 비트 필드를 1과 비교할 경우에는 비트 필드를 부호 있는 정수로 암시적 캐스팅하는 과정이 포함됩니다. 이 캐스팅은 저장된 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...
  }
}