MISRA C++:2008 Rule 27-0-1

Библиотека ввода/вывода потока < cstdio > не должна использоваться

Описание

Определение правила

Библиотека ввода/вывода потока < cstdio > не должна использоваться.

Объяснение

Функции в cstdio такие как gets, fgetpos, fopen, ftell, и т.д. имеют неопределенное, неопределенное и определенное реализацией поведение.

Для образца:

  • The gets функция:

    char * gets ( char * buf );
    не проверяет, превышает ли количество символов на стандартном входе буфер buf. Функция может иметь неожиданное поведение, когда вход превышает буфер.

  • The fopen функция имеет специфическое для реализации поведение, связанное с тем, задает ли она errno от ошибок или принимает ли он дополнительные символы, следующие за спецификаторами стандартного режима.

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

Если вы ожидаете нарушения правил, но не видите его, обратитесь к разделу «Стандартные нарушения кодирования не отображаются».

Примеры

расширить все

#include <cstdio>

void func()
{
    char array[10];
    fgets(array, sizeof array, stdin); //Noncompliant
}

Использование fgets нарушает это правило.

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

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