MISRA C:2012 Rule 17.7

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

Описание

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

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

Объяснение

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

Реализация Polyspace

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

Средство проверки не отмечает функции memcpy, memset, memmove, strcpy, strncpystrcat, 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.

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

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