Menu5.2的callback函数分析

1、Callback函数详解

把一段可执行的代码像参数传递一样传递给其他代码,而这段代码会在某个时刻被调用执行,这就叫回调。如果代码被立即执行就被称为同步回调,如果在之后晚点的某个时间再执行,则被称之为异步回调。
更通俗一点的解释是:函数F1调用函数F2时,F1通过参数给F2传递了另一个函数F3的指针,在F2执行的过程中会调用函数F3,这个动作就是回调(callback),而被作为指针传入、后面又被回调的函数F3就是回调函数。

2、menu中的回调函数

menu5.2整体结构如下:

  • linktableInternal.h:LinkTableNode结构体定义了链表节点,LinkTable结构体定义了链表。
  • linktable.h:定义和声明了LinkTable操作的接口,包括创建、删除链表,以及添加、删除、搜索链表节点等功能。
  • linktable.c:实现了linktable.h中所定义的链表操作。
  • menu.c:命令行菜单程序,使用linktable.h提供的链表接口实现所有功能。

其中 linktable.c 中的SearchLinkTableNode函数利用了回调函数进行搜索:

tLinkTableNode * SearchLinkTableNode(tLinkTable *pLinkTable, 
                        int Condition(tLinkTableNode * pNode, void * args),
                        void * args)
{
    if(pLinkTable == NULL || Condition == NULL)
    {
        return NULL;
    }
    tLinkTableNode * pNode = pLinkTable->pHead;
    while(pNode != NULL)
    {    
        if(Condition(pNode, args) == SUCCESS)
        {
            return pNode;				    
        }
        pNode = pNode->pNext;
    }
    return NULL;
}

其中参数 Condition (实参 SearchCondition)就是回调函数,允许用户自己设计传入的Condition参数来定制LinkTable的功能,最后根据是否存在该条指令进行相应的输出和函数调用。

3、回调函数的作用

  • 通过回调函数给下层文件提供一个使用上层文件的接口,有效保护上层文件数据不被修改。
  • 这里menu作为上层文件实现了Condition的定义,为代码提供了良好的可复用性和扩展性。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值