C6316
C6316
Warnung C6316: Falscher Operator: Der getestete Ausdruck ist konstant und ungleich 0 (null). Verwenden Sie den bitweisen AND-Operator, um zu ermitteln, ob Bits festgelegt sind.
Diese Warnung gibt an, dass der bitweise OR-Operator (|
) verwendet wird, obwohl der bitweise AND-Operator (&
) verwendet werden sollte. Bei der bitweisen OR-Operation werden dem sich ergebenden Ausdruck Bits hinzugefügt, wohingegen bei der bitweisen AND-Operation nur die Bits ausgewählt werden, die beide Operatoren aufweisen. Bei bitweisen AND-Operationen müssen Tests auf Flags oder ein Übereinstimmungstest durchgeführt werden.
Beispiel
Der folgende Code generiert diese Warnung:
#define INPUT_VALUE 2
void f( int Flags)
{
if (Flags | INPUT_VALUE) // warning
{
// code
}
}
So korrigieren Sie die Warnung unter Verwendung des folgenden Codes
#define ALLOWED 1
#define INPUT_VALUE 2
void f( int Flags)
{
if ((Flags & INPUT_VALUE) == ALLOWED)
{
// code
}
}