если бы знал заранее про такое, то наверное бы писал так, что
каждый добавляемый модуль имеет функцию init, которая в свою
очередь вызывает инициализацию и модификацию базовой неизменной
основы, то есть init_module_A вызывает add_new_command(u8 *cmd,
*cmd_callback) и тому подобную систему конфигурации на лету. а кодовая база должна быть одна, иначе при исправлении и доработке старого "проверенного" кода задолбаешся искать и исправлять по всем проектам.