C6313
Warnung C6313: Falscher Operator: Ein Flag mit dem Wert 0 (null) kann nicht mit dem bitweisen Operator AND getestet werden. Verwenden Sie einen Übereinstimmungstest, um eine Überprüfung auf Flags mit dem Wert 0 durchzuführen.
Diese Warnung weist darauf hin, dass in einem Testkontext ein konstanter Wert von 0 (null) als Argument für den bitweise Operator AND (&) angegeben wurde. Der sich daraus ergebende Ausdruck ist konstant und wird zum Ergebnis false ausgewertet; das Ergebnis ist anders als beabsichtigt.
Dies wird i. d. R. bei Verwendung eines bitweisen Operators AND zum Testen eines Flags mit dem Wert 0 (null) verursacht. Um Flags mit dem Wert 0 (null) zu testen, muss ein Übereinstimmungstest ausgeführt werden, z. B. mit == oder !=.
Beispiel
Der folgende Code generiert diese Warnung:
#define FLAG 0
void f(int Flags )
{
if (Flags & FLAG)
{
// code
}
}
So korrigieren Sie die Warnung unter Verwendung des folgenden Codes
#define FLAG 0
void f(int Flags )
{
if (Flags == FLAG)
{
// code
}
}