MISRA C ++:2008 правил 27-0-1

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

Описание

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

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

Объяснение

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

Например:

  • Функция gets:

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

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

Обменивайтесь сообщениями в отчете

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

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

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

Примеры

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

#include <cstdio>

void func() {
 char array[10];
 gets(array);
}

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

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

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

Введенный в R2013b