gpt4 book ai didi

c - 带字符串的长 IF 树

转载 作者:太空宇宙 更新时间:2023-11-04 00:42:40 25 4
gpt4 key购买 nike

我有一个使用 Lua 编写脚本的 C 程序。为了保持可读性并避免在单个 Lua 状态中导入多个常量,我通过使用“操作”在一个简单的调用(例如“ObjectSet(id,“ANGLE”,45)”)中压缩了大量函数字符串。

为了做到这一点,我有一个大的 if 树将 Action 字符串与列表进行比较(例如“if(stringcompare(action,“ANGLE”)... else if(stringcompare(action,“X”)...等”)

这种方法效果很好,在程序中它并不是很慢,而且添加新 Action 的速度相当快。但我有点觉得完美主义者。在 C 中有更好的方法吗?

并且大量使用 Lua,也许有办法将它用于此目的? (嵌入“ block ”制作字典?)尽管这部分主要是出于好奇。

编辑:我应该注意我没有使用 C++

最佳答案

您可以切换到使用枚举和 case 语句。虽然该函数只是将 if 树替换为大型 case 语句,但比较不需要每次都进行字符串比较,而只需进行数值比较。

typedef enum objectsetAction {
objectset_angle = 0,
objectset_other,
...
} objectsetAction;

然后定义 ObjectSet 函数以采用 objectsetAction 参数而不是字符串。

这样你就可以写

switch(action) {
case objectset_angle:
//dostuff
break;
case objectset_other:
//dostuff
break;
...
}

关于c - 带字符串的长 IF 树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2526769/

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