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

Параметр функции не должен быть изменен

Описание

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

Параметр функции не должен быть изменен.

Объяснение

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

Обменивайтесь сообщениями в отчете

Параметр функции не должен быть изменен.

Поиск и устранение проблем

Если вы ожидаете нарушение правила, но не видите его, обратитесь к Кодированию Стандартных Нарушений, Не Отображенных.

Примеры

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

int input(void);

void func(int param1, int* param2) {
    
    param1 = input();   /* Non-compliant */
    *param2 = input();  /* Compliant */
}

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

Правило не нарушено, когда параметр является указателем, param2 и *param2 изменяются.

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

Группа: Функции
Категория: консультация
Категория AGC: удобочитаемость
Язык: C90, C99

Введенный в R2015b