Avertissement C6299
La comparaison explicite d’un champ de bits à un type booléen génère des résultats inattendus
Notes
Cet avertissement indique une hypothèse incorrecte selon laquelle les champs booléens et bit sont équivalents. L’affectation de 1 à des champs de bits place 1 dans son bit unique ; toutefois, toute comparaison de ce champ de bits à 1 inclut un cast implicite du champ bit vers un int signé. Ce cast convertit le 1 stocké en -1 et la comparaison peut produire des résultats inattendus.
Nom de l’analyse du code : BITFIELD_TO_BOOL_COMPARISON
Exemple
Le code suivant génère cet avertissement :
struct myBits
{
short flag : 1;
short done : 1;
//other members
} bitType;
void f( )
{
if (bitType.flag == 1)
{
// code...
}
}
Pour corriger cet avertissement, utilisez un champ bit comme indiqué dans le code suivant :
void f ()
{
if(bitType.flag==bitType.done)
{
// code...
}
}
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour