Sdílet prostřednictvím


C28715

upozornění C28715: Přetypování mezi séanticky odlišné celočíselné typy

Toto upozornění značí, že se přetypuje logická hodnota na NTSTATUS. To je pravděpodobné, že poskytne nežádoucí výsledky. Například typická hodnota selhání pro funkce, které vracejí logickou hodnotu (FALSE) je stav úspěchu při testování jako NTSTATUS.

Funkce, která vrací logickou hodnotu, obvykle vrátí hodnotu 1 (pro TRUE) nebo 0 (pro FALSE). Obě tyto hodnoty jsou považovány za kódy úspěchu NT_SUCCESS makrem. Proto se případ selhání nikdy nezjistí.

Příklady

PrEfast hlásí upozornění pro následující příklad.

extern BOOL SomeFunction(void);

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

Následující příklad zabrání chybě.

extern BOOL SomeFunction(void);

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