工程化编程实战callback接口学习笔记
时间:2020-03-19 00:14:26
收藏:0
阅读:84
工程化编程实战callback接口学习笔记
1.实验环境
vscode+Remote-ssh插件
使用vscode远程登录Linux虚拟机开发
xshell
方便将windows主机中的文件传输到虚拟机中,本次实验室将实验代码传输到虚拟机中
Ubuntu虚拟机
2.实验步骤
配置Remote-ssh
- 配置远程主机ip和端口号
配置公钥登录
具体步骤可以参考此博客
安装windows上的ssh服务
设置->应用与功能->管理可选功能,点击添加ssh即可通过Remote-ssh登录到Linux
测试代码
由于在实际代码的执行过程中会出错,在代码中添加
include "string.h"
在终端下使用命令
gcc -o menu linktable.c menu.c
运行可执行文件
分别测试help命令和quit命令,发现quit命令报错,结果如下:
结果分析
检查代码后发现,在主函数中,命令行接受命令后会去调用
FindCmd
函数,根据返回值结果来进行输出:我们继续检查这个
FindCmd
函数,看看其内部到底在干些什么事情.检查代码后发现,FindCmd函数内部只是调用了另外一个函数SearchLinkTableNode
,它啥也没干:于是我们进入到
SearchLinkTableNode
函数内部,看看他的工作有哪些:
这段代码很明显是在遍历一个链表,可以很明显的看到边界代码逻辑中的一个缺陷:并没有遍历链表的最后一个节点.而最后一个节点正好是保存一个退出信息的.在InitMenuData
函数中可以看到整个链表的结构以及每个节点保存的内容:
整个链表就这三个节点,分别对应着help
命令,version
命令以及quit
命令:
分析完成!
接下来我们将代码中的逻辑错误部分进行更正:
tLinkTableNode * SearchLinkTableNode(tLinkTable *pLinkTable, int Conditon(tLinkTableNode * pNode))
{
if(pLinkTable == NULL || Conditon == NULL)
{
return NULL;
}
tLinkTableNode * pNode = pLinkTable->pHead;
while(pNode != NULL)
{
if(Conditon(pNode) == SUCCESS)
{
return pNode;
}
pNode = pNode->pNext;
}
return NULL;
}
重新编译,并执行,结果如下:
大功告成!
原文:https://www.cnblogs.com/sa19225475/p/12520970.html
评论(0)