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

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

Описание

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

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

Объяснение

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

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

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

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

Пропавшие без вести возвращаемого значения для непустой функции 'XX'.

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

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

Примеры

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

int absolute(int v) {
    if(v < 0) {
        return v;
    }
}    

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

#define SIZE 10
int table[SIZE];

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

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

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

Группа: Функция
Категория: обязательный
Категория AGC: обязательный
Язык: C90, C99

Введенный в R2014b