Condividi tramite


C28715

avviso C28715: Cast tra tipi integer semanticamente diversi

Questo avviso indica che viene eseguito il cast di un valore Boolean in NTSTATUS. È probabile che ciò restituisca risultati indesiderati. Ad esempio, il valore di errore tipico per le funzioni che restituiscono un valore booleano (FALSE) è uno stato di esito positivo quando viene testato come NTSTATUS.

In genere, una funzione che restituisce Boolean restituisce 1 (per TRUE) o 0 (per FALSE). Entrambi questi valori vengono considerati come codici di esito positivo dalla macro NT_SUCCESS . Pertanto, il caso di errore non verrà mai rilevato.

Esempi:

PREfast segnala l'avviso per l'esempio seguente.

extern BOOL SomeFunction(void);

if (NT_SUCCESS(SomeFunction())) {
   return 0;
} else {
   return -1;
}

Nell'esempio seguente viene evitato l'errore .

extern BOOL SomeFunction(void);

if (SomeFunction() == TRUE) {
   return 0;
} else {
   return -1;
}