路过的小游侠 + 《软件工程(C编码实践篇)》MOOC课程作业http://mooc.study.163.com/course/USTC-1000002006
GitHub: [lab5]:https://github.com/littleRanger/SoftwareEngineering/tree/master/lab5
一. 实验目的
给Linktable增加Callback方式的接口
在menu中用Callback方式查询链表
进一步改进Linktable的Callback方式的接口
用callback函数实现的多态浅析
信息隐藏
二. 实验内容
给lab5-1.tar.gz找bug,quit命令无法运行的bug
利用callback函数参数使Linktable的查询接口更加通用
注意接口的信息隐藏
三. 实验过程
- 找到bug
问题: quit 命令找不到命令
一层一层函数栈, 寻找, 发现在SearchLinkTableNode函数中, 遍历到链表尾巴就结束了,while(pNode!=pTail) 导致如果命令是尾巴节点, 则无法进去while循环体内部, 也就无法执行condition(pNode)的确认钩子函数.
只要while语句的结束条件为 pNode!=NULL即可
2.利用callback函数参数使Linktable的查询接口更加通用
先将cmd字符串取消定义为全局变量,然后修改callback函数。
tLinkTableNode * SearchLinkTableNode(tLinkTable *pLinkTable,intConditon(tLinkTableNode * pNode,void* args),void* args);
记得同时修改该函数的申明和使用
效果截图3. 注意信息的隐藏
在linktable.c中定义Linktable结构体,而在linktable.h中只留下LinkTable结构的声明。
总结:
本次实验主要学会了如何callback函数的处理方式.
实践了对外暴露接口的处理, 提高了对模块化理解.
最后git 实践了git pull自动merge功能, 原因在于在网页给lab4 commit 过readme,
网友评论