MISRA C:2012 Rule 17.4

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

Описание

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

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

Объяснение

Если не - 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