2016-03-08 6 views
-1

Функция: int atexit (void (*function) (void)) позволяет нам вызывать одни и те же функции обработки выхода более одного раза. Почему вы вызываете обработчики вывода более одного раза? Не могли бы вы привести мне пример, когда имеет смысл вызывать один и тот же обработчик выхода более одного раза.Зачем вы вызываете одни и те же обработчики вывода (функция atexit) более одного раза?

ответ

1

Я бы отменил диагностику: функция atexit не имеет простого способа узнать, зарегистрирована ли функция обработки, поэтому она даже не пытается ее идентифицировать.

По этой причине он не запрещает это.

Но я согласен с тобой Я не могу найти реальный случай пользователя для регистрации одного и того же обработчика более одного раза.

+0

Если у вас есть одиночный ад ... например, Logger и еще один синглтон, который использует Logger, вы можете завершить повторную инициализацию регистратора и снова вызвать atexit ... хотя это признак того, что вы делаете что-то неправильно я думаю, но если у вас есть сторонний синглтон, и вы используете его в своих собственных синглонах, никто не знает, что произойдет –