MISRA C:2012 Rule 8.9

Объект должен быть определен в возможности, если его идентификатор появляется только в одной функции

Описание

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

Объект должен быть определен в возможности, если его идентификатор отображается только в одной функции.

Объяснение

Если вы задаете объект в области блока, вы или кто-то другой с меньшей вероятностью получите доступ к объекту непреднамеренно вне блока.

Реализация Polyspace

Флажки проверки правил static объекты, которые доступны только в одной функции, но объявлены в области файлов.

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

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

Примеры

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

static int ctr;   /* Non compliant */

int checkStatus(void);
void incrementCount(void);

void incrementCount(void) {
    ctr=0;
    while(1) {
        if(checkStatus())
            ctr++;
    }
}

В этом примере объявление ctr не совместим, поскольку он объявлен в области файлов, но используется только в функции incrementCount. Объявить ctr в теле incrementCount будет MISRA C®-совместим.

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

Группа: Декларации и определения
Категория: Консультационные
Категория СМЖЛ: Консультационная
Введенный в R2014b