使用函数指针列表搭建程序框架

本文介绍如何利用函数指针建立程序框架,针对不同用户输入调用相应处理函数。通过定义FUNC_REG结构体存储字符串和函数指针,构建函数注册表,实现动态添加和修改处理函数的功能。 LookupFunc函数用于查找并调用匹配的处理函数,实现了灵活的函数调用机制。
摘要由CSDN通过智能技术生成

问题描述:

如果我们需要做一个这样的程序,当用户输入"hello"时,我调用hello函数,当用户输入"hey"时,我调用hey函数,像这样的对应关系,用户可能会有数千种输入,每种输入对应一个我需要调用的函数。

一般的方法,肯定是这样,在程序处理流程中,这样写:

    if (0 == strcmp(strInput, "hello"))
    {
        hello();
    }
    else if (0 == strcmp(strInput, "hey"))
    {
        hey();
    }
    else if 
    {
        ..... 

这样的程序分支,写下来就是不断地重复,等你需要添加新的函数时,不得不在一个已经写得很长的函数里面不断地加else if,而且不能支持处理函数的动态添加,比如我突然觉得“hello”的输入要交给hey()函数来处理了,那我只能在编译期修改它,不能在程序运行之后再修改。

现在有一个好办法,我们可以使用函数指针来处理这些处理函数的对应关系,下面举一个例子

#include <stdio.h>
#include <string.h>

typedef void(*VOID_FUNC_PTR)(void);

typedef struct
{
    char *pszInput;
    VOID_FUNC_PTR func;
} FUNC_REG;

void hello(voi
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值