Поделиться через


C28715

предупреждение C28715: приведение между семантически разными целыми типами

Это предупреждение указывает, что логическое значение приведение к NTSTATUS. Это, вероятно, даст нежелательные результаты. Например, типичное значение сбоя для функций, возвращающих логическое значение (FALSE) является состоянием успешности при тестировании в качестве NTSTATUS.

Как правило, функция, возвращающая логическое значение, возвращает значение 1 (для TRUE) или 0 (для FALSE). Оба этих значения рассматриваются как коды успешности с помощью макроса NT_SUCCESS. Таким образом, случай сбоя никогда не будет обнаружен.

Примеры

PREfast сообщает предупреждение для следующего примера.

extern BOOL SomeFunction(void);

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

В следующем примере не возникает ошибка.

extern BOOL SomeFunction(void);

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