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


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;
}