exponenta event banner

MISRA C:2012 Правило 17.4

Все пути выхода из функции с типом возврата non-void должны иметь явную инструкцию return с выражением

Описание

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

Все пути выхода из функции с типом возврата non-void должны иметь явную инструкцию return с выражением.

Объяснение

Если не -void функция явно не возвращает значение, но вызывающая функция использует возвращаемое значение, поведение не определено. Чтобы предотвратить такое поведение, выполните следующие действия.

  1. Необходимо предоставить return с явным выражением.

  2. Необходимо обеспечить, чтобы во время выполнения, по крайней мере, один return выполняется инструкция.

Дополнительное сообщение в отчете

Отсутствует возвращаемое значение для непустой функции «» XX «».

Поиск неисправностей

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

Примеры

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

int absolute(int v) {
    if(v < 0) {
        return v;
    }
} // Non-compliant   

В этом примере правило нарушается, поскольку return инструкция существует не на всех путях выполнения. Если v >= 0, то элемент управления возвращается к вызывающей функции без явного возвращаемого значения.

#define SIZE 10
int table[SIZE];

unsigned short lookup(unsigned short v) {
    if((v < 0) || (v > SIZE)) {
        return; // Non-compliant 
    }
    return table[v];
} 

В этом примере правило нарушено, поскольку return оператор в if блок не имеет явного выражения.

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

Группа: Функция
Категория: Обязательно
Категория СМЖЛ: обязательная
Представлен в R2014b