MISRA C:2012 Rule 22.5

Указатель на FILE объект не должен быть разграниченным

Описание

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

Указатель на FILE объект не должен быть удален.

Объяснение

Стандарт утверждает, что адрес FILE объект, используемый для управления потоком, может быть значимым. Копирование этого объекта может не привести к тому же поведению. Это правило гарантирует, что вы не можете выполнить такую копию.

Непосредственное управление FILE объект может быть несовместим с его использованием в качестве потокового обозначения.

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

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

Примеры

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

#include <stdio.h>

void func(void) {
    FILE *pf1;
    FILE *pf2;
    FILE f3;

    pf2 = pf1;        /* Compliant */
    f3 = *pf2;        /* Non-compliant */
    pf2->_flags=0;    /* Non-compliant */
 }

В этом примере правило нарушается, когда FILE* указатель pf2 дереференсируется.

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

Группа: Ресурсы
Категория: Обязательная
Категория AGC: Обязательно
Введенный в R2015b