工程化编程实战callback接口学习笔记
一、在VSCode下编译运行lab5-1.tar.gz
资源:http://pan.baidu.com/s/1pJ0qAIv

显示报错,在这个区域内未声明。添加头文件String.h


上面显示不能打开输出文件,然后我到工程目录文件夹中找,并没有生成menu.exe二进制文件。
然后我直接在终端利用gcc命令生成menu.exe
gcc -o menu menu.c linktable.c


按照错误提示,我在工程目录下新建一个build文件夹,然后将gcc生成得menu.exe文件粘贴到这里,发现还是有别的错误。
于是我放弃了,还是用终端命令运行程序。

查看结果,使用quit发现没有退出程序,而是提示worng cmd,显然是错误的。
二、通过VSCode+GDB调试程序找出quit命令无法运行的bug产生的原因
2
gcc -g linktable.c menu.c -o menu
gdb menu
```




由于返回了NULL,

所以在menu.c中判断语句会打印出This is a wrong cmd!

查看源代码得到的上图,可知quit在链表的最后一个节点。


运行成功!
#### 三、分析callback接口的运行机制,总结callback接口设计的方法 ####
3
关于回调函数的原理,我在这里链接一篇知乎:https://www.zhihu.com/question/19801131
在这个程序中
```
tDataNode* FindCmd(tLinkTable * head, char * cmd)
{
return (tDataNode*)SearchLinkTableNode(head,SearchCondition);
}
```
其中SearchLinkTableNode(head,SearchCondition)函数就是个回调函数,head是个结构体变量,而SearchCondition是个函数地址。

浙公网安备 33010602011771号