C6317
Aviso C6317: operador incorreto: não lógico (!) não é intercambiável com aqueles complemento (~)
Este aviso indica que um não lógico do (!) está sendo aplicada a uma constante que provavelmente será um sinalizar de bit. O resultado lógico não é booliano; é incorreta para aplicar o operador bit a bit- e (&) operador para um valor booliano. Usar o complemento aqueles (~) operador para inverter sinalizadores.
Exemplo
O código a seguir gera este aviso:
#define FLAGS 0x4004
void f(int i)
{
if (i & !FLAGS) // warning
{
// code
}
}
Para corrigir esse aviso, use o seguinte código:
#define FLAGS 0x4004
void f(int i)
{
if (i & ~FLAGS)
{
// code
}
}