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

一、尝试编译运行lab5-1代码

在macos中gcc命令被clang占用,我们使用gcc-9命令进行编译

出现警告implicit declaration,提示我们strcmp函数在使用前没有进行声明,我们加上头文件后再进行编译。

工程化编程实战callback接口学习笔记_第1张图片

 

之后再进行编译就没有警告信息了,我们尝试运行menu程序

工程化编程实战callback接口学习笔记_第2张图片

可以看到输入命令help和version时功能正常,但是quit命令却没有正常运行。

二、我们尝试使用GDB进行调试。

在打断点运行run指令时提示错误如下。

我们通过官网提示步骤配置GDB,创建证书并信任GDB,给予GDB完全控制被调试进程的权限。

工程化编程实战callback接口学习笔记_第3张图片

开始进行调试

工程化编程实战callback接口学习笔记_第4张图片

发现函数在搜最后一个节点时返回NUll,通过查看源代码

工程化编程实战callback接口学习笔记_第5张图片

 在循环到尾节点的时候此循环直接跳出,不进行当前节点的比较,我们找到了问题所在,进行修改如下。 

工程化编程实战callback接口学习笔记_第6张图片

 

重新编译进行验证 

工程化编程实战callback接口学习笔记_第7张图片

 三、分析callback函数运行机制

回调函数通过把函数指针当作参数传递的一种调用方法,因为可以把调用者与被调用者分开,所以调用者不关心谁是被调用者。它只需知道存在一个具有特定原型和限制条件的被调用函数。在该项目中,运用回调函数的函数定义如下

工程化编程实战callback接口学习笔记_第8张图片

 根据传入不同的condition函数,进行不同的函数调用,实现了更灵活的函数形式。在本项目的应用中我们通过传入函数SearchCondition当作参数,是能够在SearchLinkTableNode函数中使用该函数,减小了代码之间的耦合性,也使开发更加的灵活。

你可能感兴趣的:(工程化编程实战callback接口学习笔记)