MISRA C++:2008 Rule 19-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 позднее не защищает от возможных отказов в преобразовании.

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

Группа: Библиотека диагностики
Категория: Требуемая
Введенный в R2013b