MISRA C:2012 Rule 17.4

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

Описание

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

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

Объяснение

Если non-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 блок не имеет явного выражения.

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

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