ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

工程化编程实战callback接口学习

2020-03-19 09:00:11  阅读:228  来源: 互联网

标签:调用 函数 menu 编程 callback SearchLinkTableNode 工程化 女朋友


工程化编程实战callback接口学习

一、下载源代码,编译运行相关代码

  1. 运行Ubuntu环境,将老师给的代码下载下来,用tar -zxvf 命令解压

  2. 使用gcc工具进行编译,这里用到的命令是

gcc linktable.c menu.c -o ./se2020

这个时候会发现报错,出现了警告,原因是menu.c中缺少了string类库,无法使用strcmp

导入include<string.h>后,重新编译

3.运行程序 ./2020 测试menu小程序,此时发现quit命令报错,显示This is a wrong cmd!

二、排查错误原因

1.使用VS code进入menu.c查看源代码

此时发现,如果输出“This is a wrong cmd!",表示p指针为空,接下来我们去找什么时候p指针会为空

2.进入FindCmd函数

 

发现这里调用了SearchLinkTableNode(head,SearchCondition)函数

3.进入SearchLinkTableNode函数

这里有一个int Condition(tLinkTableNode* pNode),这是一个callback函数,SearchLinkTableNode是call-in方式函数,一个函数作为参数,这个函数就是callback函数.

4.进入InitMenuData函数

推断链表中quit对应的节点没有被正常遍历到,此时修改SearchLinkTableNode函数p != pLinkTable->pTail这个条件即可,pNode != NULL

 

5.得到正确结果

三、callback函数

一般情况下,应用程序会时常通过API调用库里预先准备好的函数,有些库函数需要应用先传递给它一个函数,好在合适的时候来调用。这个被传入的、又被调用的函数就是回调函数。

约会结束后你送你女朋友回家,离别时,你肯定会说:“到家了给我发条信息,我很担心你。”对不,然后你女朋友回家以后还真给你发了条信息。小伙子,你有戏了。

其实这就是一个回调的过程。你留了个函数b(要求女朋友给你发条信息)给你女朋友,然后你女朋友回家,回家的动作是函数a。她必须先回到家以后,函数a的内容执行完了,再执行函数b,然后你就收到一条信息了。

这里必须清楚一点:函数b是你以参数形式传给函数a的,那么函数b就叫回调函数。

参考博客:https://blog.csdn.net/undericon/article/details/81188923

标签:调用,函数,menu,编程,callback,SearchLinkTableNode,工程化,女朋友
来源: https://www.cnblogs.com/raoxinyue/p/12511835.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有