C6313
avviso C6313: Operatore errato: impossibile testare un flag con valore zero con AND bit per bit. Utilizzare un test di uguaglianza per verificare i flag con valore zero
L'avviso indica che un valore costante pari a zero è stato fornito come argomento all'operatore AND bit per bit (&) in un contesto di test. L'espressione risultante è costante e restituisce un valore false. Il risultato è diverso da quello stabilito.
Questa condizione di solito è determinata dall'utilizzo dell'operatore AND bit per bit per eseguire un test su un flag con valore zero. Per eseguire un test di flag con valore zero è necessario eseguire un test di uguaglianza utilizzando ad esempio == o !=.
Esempio
Il codice seguente genera questo avviso:
#define FLAG 0
void f(int Flags )
{
if (Flags & FLAG)
{
// code
}
}
Per risolvere il problema, utilizzare il codice seguente:
#define FLAG 0
void f(int Flags )
{
if (Flags == FLAG)
{
// code
}
}