AUTOSAR C++ 14 правил M19-3-1

Ошибочный индикатор errno не должен использоваться.

Описание

Управляйте определением

Ошибочный индикатор errno не должен использоваться.

Объяснение

Наблюдение этого правила поощряет хорошую практику не доверия errno проверять состояние ошибки.

Проверка errno не достаточна, чтобы гарантировать отсутствие ошибок. Функции, такие как fopen, не могут установить errno на состоянии ошибки. Часто, необходимо проверять возвращаемое значение таких функций для состояния ошибки.

Поиск и устранение проблем

Если вы ожидаете нарушение правила, но не видите его, обратитесь к Кодированию Стандартных Нарушений, Не Отображенных.

Примеры

развернуть все

#include <cstdlib>
#include <cerrno>

void func (const char* str) {
    errno = 0;  // Noncompliant
    int i = atoi(str);
    if(errno != 0) { // Noncompliant
        //Handle Error
    }
}

Использование errno нарушает это правило. Функциональный atoi не требуется установить errno, если входная строка не может быть преобразована в целое число. Проверка errno позже не охраняет против возможных отказов в преобразовании.

Проверяйте информацию

Группа: библиотека диагностики

Введенный в R2019a