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®-compliant.

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

Группа: объявления и определения
Категория: консультация
Категория AGC: консультация
Введенный в R2014b