Я пытаюсь создать анализатор команд для встроенной системы (голое железо), где он будет получать команду через сообщение и вызывать соответствующую функцию. Структура будет выглядеть так:
struct cmdparse{
char* commandname;
function_pointer;
};
Первоначально соответствующие модули зарегистрируют команду, которую они будут обслуживать, и соответствующий указатель на функцию. Анализатор команд создает таблицу поиска во время инициализации. Когда команда принимается, она анализирует таблицу и вызывает соответствующую функцию. Возможно ли это сделать, т. е. построить эту справочную таблицу во время компиляции, используя шаблонное метапрограммирование. Главное преимущество, которое я ожидаю, это когда добавляется новая команда, мне не нужно проверять анализатор команд, чтобы увидеть, нужно ли увеличивать размер массива. Поскольку это встроенный системный проект, использование вектора запрещено из-за требований динамической памяти. Кроме того, если эта справочная таблица перейдет в ПЗУ, а не в ОЗУ, это добавит пункт о безопасности во избежание преднамеренного повреждения.