Потоковые побочные эффекты аргумента происходят несколько раз
Этот дефект происходит, когда вы вызываете 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