美文网首页
实验五:用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