MISRA C:2012 Rule 17.8

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

Описание

Примечание

Используйте Bug Finder вместо Code Prover для проверки правил кодирования. Поддержка кодирования правил, регистрируясь в Code Prover будет удалена в будущем релизе. См. Вопросы совместимости.

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

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

Объяснение

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

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

Если вы ожидаете нарушение правила, но не видите его, относитесь, чтобы Диагностировать, Почему Кодирующие Стандартные Нарушения Не Появляются как ожидалось.

Примеры

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

int input(void);

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

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

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

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

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

Вопросы совместимости

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

Не рекомендуемый запуск в R2021b

Введенный в R2015b