Функция: int atexit (void (*function) (void))
позволяет нам вызывать одни и те же функции обработки выхода более одного раза. Почему вы вызываете обработчики вывода более одного раза? Не могли бы вы привести мне пример, когда имеет смысл вызывать один и тот же обработчик выхода более одного раза.Зачем вы вызываете одни и те же обработчики вывода (функция atexit) более одного раза?
-1
A
ответ
1
Я бы отменил диагностику: функция atexit
не имеет простого способа узнать, зарегистрирована ли функция обработки, поэтому она даже не пытается ее идентифицировать.
По этой причине он не запрещает это.
Но я согласен с тобой Я не могу найти реальный случай пользователя для регистрации одного и того же обработчика более одного раза.
Если у вас есть одиночный ад ... например, Logger и еще один синглтон, который использует Logger, вы можете завершить повторную инициализацию регистратора и снова вызвать atexit ... хотя это признак того, что вы делаете что-то неправильно я думаю, но если у вас есть сторонний синглтон, и вы используете его в своих собственных синглонах, никто не знает, что произойдет –