Warnung C6317
Falscher Operator: Wahrheitsfrei (!) ist nicht austauschbar mit Durchlement (~)
Hinweise
Diese Warnung weist darauf hin, dass eine konstante nicht (!
) auf eine Konstante angewendet wird, die wahrscheinlich ein Bit-Flag ist. Das Ergebnis der logischen Nicht-Logik ist boolescher Wert; Es ist falsch, den Bitweise- und (&
) Operator auf einen booleschen Wert anzuwenden. Verwenden Sie zum Kippen von Flags den Operator "durch"-Komplement ().Use the ones-complement (~
) operator to flip flags.
Codeanalysename: NOTNOTCOMPLEMENT
Beispiel
Der folgende Code generiert diese Warnung:
#define FLAGS 0x4004
void f(int i)
{
if (i & !FLAGS) // warning
{
// code
}
}
So korrigieren Sie die Warnung unter Verwendung des folgenden Codes
#define FLAGS 0x4004
void f(int i)
{
if (i & ~FLAGS)
{
// code
}
}