Выходные параметры не должны использоваться
Выходные параметры не должны использоваться.
Можно сохранить выходное значение функции в переменной, которую вы передаете этой функции как ссылка неconst или параметр указателя, например:
void func(const T* input_var, T* output_var); //declaration void func(const T* input_var, T* output_var) { *output_var = *input_var % 2; }
Однако это неясно из объявления функции ли выходной параметр output_var
передает значение func
и затем хранит выход (изменяемый параметр), или ли output_var
только хранит выход (параметр). Эта сила заставляет разработчика неправильно использовать параметр, например, путем передачи пустого параметра, когда функция ожидает непустой параметр.
Вместо этого используйте возвращаемое значение, чтобы сохранить функциональный выход. Возвращаемое значение ясно дает понять ваше намерение и предотвращает возможное неправильное употребление переданных параметров, например:
T* func(const T* input_var) { return *input_var % 2; }
Polyspace® флаги все использование ссылок неconst или указателей в списке параметров:
Функции, за исключением main()
.
Конструкторы класса и операторы.
Если ваш код содержит объявление функции и его определение, Polyspace отмечает нарушение в функциональном определении.
Примечание
Polyspace отмечает ссылку неconst или указатель в списках параметров, даже если тот параметр не используется в качестве выходного параметра.
Если вы ожидаете нарушение правила, но не видите его, относитесь, чтобы Диагностировать, Почему Кодирующие Стандартные Нарушения Не Появляются как ожидалось.
Группа: операторы объявления |
Категория: необходимый, автоматизированный |