Неиспользованный параметр

Прототип функции имеет параметры не чтение или написанный в теле функции

Описание

Неиспользованный параметр происходит, когда параметр функции ни не считан, ни написан в теле функции.

Риск

Неиспользованные параметры функции вызывают следующие проблемы:

  • Укажите, что код является возможно неполным. Параметр возможно предназначается для операции, что вы забыли кодировать.

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

Фиксация

Определите, намереваетесь ли вы использовать параметры. В противном случае удалите параметры, которые вы не используете в теле функции.

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

Также добавьте оператор, такой как (void)var; в теле функции. var является неиспользованным параметром. Можно задать макрос, который расширяется до этого оператора, и добавьте макрос в тело функции.

Примеры

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

void func(int* xptr, int* yptr, int flag) {
    if(flag==1) {
        *xptr=0;
    }
    else {
        *xptr=1;
    }
}

int main() {
    int x,y;
    func(&x,&y,1);
    return 0;
}

В этом примере параметр yptr не используется в теле func.

Исправление — параметр использования

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

void func(int* xptr, int* yptr, int flag) {
    if(flag==1) {
        *xptr=0;
        *yptr=1;
    }
    else {
        *xptr=1;
        *yptr=0;
    }
}

int main() {
    int x,y;
    func(&x,&y,1);
    return 0;
}

Исправление — явным образом указывает на неиспользованный параметр

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

#define UNUSED(x) (void)x

void func(int* xptr, int* yptr, int flag) {
    UNUSED(yptr);
    if(flag==1) {
        *xptr=0;
    }
    else {
        *xptr=1;
    }
}

int main() {
    int x,y;
    func(&x,&y,1);
    return 0;
}

Информация о результате

Группа: Хорошая практика
Язык: C | C++
Значение по умолчанию: 'off'
Синтаксис командной строки: UNUSED_PARAMETER
Влияние: низко

Введенный в R2015b