Побочные эффекты аргумента потока возникают несколько раз
Этот дефект возникает при вызове getc(), putc(), getwc(), или putwc() с аргументом stream, имеющим побочные эффекты.
Аргумент потока с, возможно, непреднамеренными побочными эффектами рассматривает следующее как побочные эффекты потока:
Любое назначение переменной потока, например FILE *или любое назначение переменной более глубокого типа потока, такой как массив FILE *.
Любой вызов функции, которая управляет потоком или более глубоким типом потока.
Количество выявленных дефектов соответствует количеству обнаруженных побочных эффектов. При многократной оценке аргумента потока в функции, реализованной как макрос, возникает дефект для каждой оценки, имеющей побочный эффект.
Дефект также возникает в функциях, которые не реализованы как макросы, но могут быть реализованы как макросы в другой операционной системе.
Если функция реализована как небезопасный макрос, аргумент потока может быть вычислен более одного раза, и побочный эффект потока происходит несколько раз. Например, аргумент потока, вызывающий fopen() может открывать один и тот же файл несколько раз, что является неопределенным поведением.
Чтобы побочный эффект потока происходил только один раз, используйте отдельный оператор для аргумента потока.
| Группа: Программирование |
| Язык: C | C++ |
| По умолчанию: Вкл для рукописного кода, выкл для сгенерированного кода |
Синтаксис командной строки:
STREAM_WITH_SIDE_EFFECT |
| Воздействие: Низкий |
Find defects (-checkers) | Opening previously opened resource | Returned value of a sensitive function not checked | Standard function call with incorrect arguments