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


C28714

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

Это предупреждение указывает, что значение NTSTATUS явно приводится к логическому типу. Это, скорее всего, даст нежелательные результаты. Например, типичное значение успеха для NTSTATUS, STATUS_SUCCESS, имеет значение false при проверке как логическое значение.

В большинстве случаев для проверки значения NTSTATUS следует использовать макрос NT_SUCCESS. Этот макрос возвращает значение true , если возвращенное значение состояния не является ни предупреждением, ни кодом ошибки. Если функция возвращает логическое значение для указания ее сбоя или успешного выполнения, она должна явно возвращать соответствующий логический тип, а не зависеть от приведения NTSTATUS к логическому типу.

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