Advertencia C6299
La comparación explícita de un campo de bits con un tipo booleano producirá resultados inesperados.
Comentarios
Esta advertencia indica la suposición incorrecta de que los campos booleanos y los de bits son equivalentes. La asignación de 1 a campos de bits colocará 1 en su bit único; sin embargo, cualquier comparación de este campo de bits con 1 incluye una conversión implícita del campo de bits en un valor entero con signo. Esta conversión convertirá el 1 almacenado en -1 y la comparación puede producir resultados inesperados.
Nombre del análisis de código: BITFIELD_TO_BOOL_COMPARISON
Ejemplo
El código siguiente genera esta advertencia:
struct myBits
{
short flag : 1;
short done : 1;
//other members
} bitType;
void f( )
{
if (bitType.flag == 1)
{
// code...
}
}
Para corregir esta advertencia, use un campo de bits como se muestra en el código siguiente:
void f ()
{
if(bitType.flag==bitType.done)
{
// code...
}
}
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de