gpt4 book ai didi

c - 在 C 中围绕大量离散函数进行设计

转载 作者:太空狗 更新时间:2023-10-29 15:36:50 25 4
gpt4 key购买 nike

问候和称呼,

我正在寻找有关在 C99 中处理大量函数的设计模式的信息。

背景:
我正在为我的宠物项目桌面 CNC 铣床开发一个完整的 G 代码解释器。目前,命令通过串行接口(interface)发送到 AVR 微 Controller 。然后解析并执行这些命令,使铣头移动。一条线的典型示例可能如下所示

N01 F5.0 G90 M48 G1 X1 Y2 Z3

其中 G90、M48 和 G1 是“ Action ”代码,F5.0、X1、Y2、Z3 是参数(N01 是可选行号,被忽略)。目前解析进展顺利,但现在是让机器真正运转的时候了。

对于每个 G 和 M 代码,需要采取特定的操作。这包括从受控运动到冷却剂激活/停用,再到执行固定循环。为此,我当前的设计具有一个功能,该功能使用开关来选择适当的功能并返回指向该功能的指针,然后可用于在适当的时间调用各个代码的功能。

问题:
1) 有没有比 switch 语句更好的方法来将任意代码解析为其各自的函数?请注意,这是在微 Controller 上实现的,内存非常紧张(总共 2K)。我考虑过查找表,但不幸的是,代码分布稀疏导致大量空间浪费。大约有 100 个不同的代码和子代码。

2) 当名称(和可能的签名)可能改变时,如何处理 C 中的函数指针?如果函数签名不同,这甚至可能吗?

3) 假设函数具有相同的签名(这是我倾向于的地方),有没有办法对要传递和调用的签名的通用类型进行类型定义?

对于分散的提问,我深表歉意。预先感谢您的协助。

最佳答案

1) 完美散列可用于将关键字映射到 token 号(操作码),可用于索引函数指针表。所需参数的数量也可以放在这个表中。

2) 您不需要重载/异构函数。可选参数可能是可能的。

3) 你唯一的选择是使用可变参数,恕我直言

关于c - 在 C 中围绕大量离散函数进行设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7341072/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com