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: Читаемость
Введенный в R2015b