我需要你的帮助来编写一个高效的程序。
我有大约 50 个函数,例如 call_1()
、call_2()
... call_50()
。我需要根据从数据包中读取的索引来调用它们,即如果数据中的字段是 25,则需要调用 call_25()
,如果是 10,则 call_10()
。
我是在 if else 条件下写的,比如
if (index == 5)
call_5()
elseif (index == 6)
..so on ..
但我认为这不是高效的写法。实现这种情况的任何其他想法? 函数指针可以帮助这里吗? 感谢你的帮助。谢谢。
最佳答案
是的,使用函数指针查找表:
typedef void(*fp)(void);
void call_01(void);
void call_02(void);
/* ... */
fp functions[] = { &call_01,
&call_02,
/* ... */
};
void call()
{
unsigned int n = get_index();
functions[n]();
}
关于c - 高效的函数调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12039520/