c - 高效的函数调用

标签 c

我需要你的帮助来编写一个高效的程序。

我有大约 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/

相关文章:

c - 如果我多次调用 C 的 read() 会发生什么?

c - 在 C 中传递给函数 arg 时结构指针和结构之间的区别

c++ - Wifi 原始数据传输

c - C 中各种字符串初始化的大小差异

使用 strcat 连续连接多个 char*

c - 获取每个页面错误的信号

c - 如何在没有预定义字符的情况下获取用户输入并设置结构值?

c++ - 通过指向指针的指针访问结构元素的地址

条件堆栈分配

C - 输入结束时出现错误 : expected '=' , ','、 ';'、 'asm' 或 '__attribute__'