Ситуация такова: допустим, есть либа, обслуживающая некоторый протокол. И на различные приходящие команды нужно дёргать за функции-коллбэки. Пусть мы храним некоторую структуру, хранящую пары событие-функция. Эта структура инициализируется дефолтными значениями. Теперь 2 ситуации:
1. Мы до запуска основного цикла обработки заменяем дефолтные обработчики своими и в процессе работы цикла не меняем их больше.
2. Меняем обработчики по ходу работы цикла, например где-то в функциях-обработчиках.
В первом случае, наверное, всё просто: получаем структуру с дефолтными обработчиками, передаём её в несколько функций, которые переопределят в ней некоторые обработчики и результат передаём в функцию запуска цикла обработки. Тут, наверное, проще некуда.
А вот как быть во втором случае, как кошернее это реализовать?