美文网首页
实验五:用callback增强链表模块来实现命令行菜单小程序V2

实验五:用callback增强链表模块来实现命令行菜单小程序V2

作者: 流浪的乞丐 | 来源:发表于2017-10-23 01:15 被阅读15次

路过的小游侠 + 《软件工程(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的查询接口更加通用
注意接口的信息隐藏

三. 实验过程

  1. 找到bug
    问题: quit 命令找不到命令
    一层一层函数栈, 寻找, 发现在SearchLinkTableNode函数中, 遍历到链表尾巴就结束了,while(pNode!=pTail) 导致如果命令是尾巴节点, 则无法进去while循环体内部, 也就无法执行condition(pNode)的确认钩子函数.
    只要while语句的结束条件为 pNode!=NULL即可
修复quit的bug

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,

lab5-git.png

相关文章

网友评论

      本文标题:实验五:用callback增强链表模块来实现命令行菜单小程序V2

      本文链接:https://www.haomeiwen.com/subject/rrkouxtx.html