exponenta event banner

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

Должно использоваться значение, возвращаемое функцией, имеющей невозвратный тип

Описание

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

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

Объяснение

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

Внедрение Polyspace

Флажки средства проверки работают с функциями, не являющимисяvoid возвращает, если возвращаемое значение не используется или явно не приводится к void тип.

Средство проверки не помечает функции memcpy, memset, memmove, strcpy, strncpy, strcat, strncat потому что эти функции просто возвращают указатель на свои первые аргументы.

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

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

Примеры

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

unsigned int cutOff(unsigned int val) {
    if (val > 10 && val < 100) {
        return val;
    }
    else {
        return 0;
    }
}

unsigned int getVal(void);

void func2(void) {
    unsigned int val = getVal(), res;
    cutOff(val);           /* Non-compliant */
    res = cutOff(val);     /* Compliant */
    (void)cutOff(val);     /* Compliant */
}

В этом примере правило нарушается, когда возвращается значение cutOff впоследствии не используется.

Правило не нарушается, если возвращаемое значение:

  • Назначено другой переменной.

  • Явно приведенный к void.

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

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