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