MISRA C:2012 Rule 17.8

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

Описание

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

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

Объяснение

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

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

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

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

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

Примеры

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

int input(void);

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

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

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

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

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

Введенный в R2015b