【发布时间】:2019-10-31 07:31:14
【问题描述】:
我正在尝试为嵌入式系统(裸机)构建一个命令解析器,它将通过消息接收命令并调用相应的函数。结构看起来像
struct cmdparse{
char* commandname;
function_pointer;
};
最初,各个模块将注册它们将服务的命令和相应的函数指针。命令解析器在初始化期间构建查找表。当收到命令时,它会解析表并调用相应的函数,是否有可能实现这一点,即使用模板元编程在编译时构建这个查找表。我期望的主要优势是,当添加新命令时,我不需要检查命令解析器来查看是否需要增加数组大小。由于它是一个嵌入式系统项目,由于动态内存要求,禁止使用矢量。另外,如果此查找表转到 ROM 而不是 RAM,它将添加一个避免意外损坏的安全条款。
【问题讨论】:
-
仅当模块的注册也将在编译时发生
-
是的,每个模块在编译时都会知道命令名和对应的回调。
标签: c++ template-meta-programming