工程化编程实战callback接口学习笔记
一、
1. 在menu头文件加上 #include <string.h> 后,编译运行 gcc -o menu .\linktable.c .\menu.c ,会在目录下生成menu.exe文件
2. 运行结果:
3. 从输出结果定位到源文件代码处:
再到FindCmd:
其中,SearchCondition是函数指针,定义如下,功能是比较节点中的cmd与输入cmd的值:
再到SearchLinkTableNode函数,其中condition是指向一个函数,这个函数返回int,接受参数为tLinkTableNode的指针,在这里指向的是SearchCondition,
功能是循环查找直到链表结尾,但是可以发现,其while循环,若条件不成立(即pNode == pLinkTable->pTail
),则直接返回NULL,不再检查尾结点,所以只要修改语句检查一下尾节点即可。
修改如下:
运行,成功:
二、
回调函数:回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。