高软-menu项目学习笔记
经过这几节课的学习,对项目的编程设计思想上,有了一点了解。本博客本着学习的思想,参考老师的代码和上课ppt,跟着学习资料自己做下,加深理解,顺便写下学习总结。
项目案例链接:https://github.com/mengning/menu
参考资料链接: https://gitee.com/mengning997/se/blob/master/README.md#%E4%BB%A3%E7%A0%81%E4%B8%AD%E7%9A%84%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B
一、C/C++编译调试环境配置
(2)安装Microsoft C / C ++ extension
在vs code的侧边栏的“扩展”里面搜索“C/C++”,点击下载即可。
(3)C / C ++编译器和调试器
C / C ++编译器和调试器的编译器和调试器有很多,这里选择Mingw-w64/GCC and GDB,下载链接。
在下载完成后,进行安装,安装过程一路“next”即可。在安装完成后,还要配置一下“环境变量”(老生常谈了。。。在PATH下进行添加路径,添加到MInGW\bin文件路径下)。
安装完成后,打开CMD,输入命令gcc -v,查看是否安装成功。

(4)配置VSCode
此时,点击Run按钮。程序仍然是无法进行编译运行的。如下图:

点击上图中的“Run and Debug”,如何跟着提示走,就会生成 launch.json文件 和 tasks.json。

在当前文件是C、C++的情况下,tasks.json文件告诉vs代码如何构建(编译)程序,而launch文件用来执行编译好的文件。
在终端输入以下命令,可看到输出正常。

vscode提供了丰富的第三方插件,敲命令行不免麻烦。下载插件“Code Runner”,一键运行。

点击右上角的运行按钮,运行如图:

- 一行代码只做一件事
- 一个块代码只做一件事
- 一个函数只做一件事
- 一个软件模块只做一件事
linktable.h 进行链表数据结构的定义,以及定义了相关函数接口。 linktable.c 中实现了linktable中定义的方法 menu.c 负责主要的代码逻辑
(7)lab5.1
在这部分给Linktable增加Callback方式的接口。
首先,什么是call in? 什么是 call back?
tLinkTableNode * SearchLinkTableNode(tLinkTable *pLinkTable, int Conditon(tLinkTableNode * pNode));
如上行代码,为linktable.h中定义的一个接口。那么给Linktable增加Callback方式的接口,需要两个函数接口,一个是call-in方式函数,如SearchLinkTableNode函数,其中有一个函数作为参数,这个作为参数的函数就是callback函数,如代码中Conditon函数。简单的来说,一个包含call back的接口名是这样的: 返回类型 cal_in_function(call_back_function): 然后在函数体内,call_back_function在适当时候被激活。
call back接口的好处:
利用callback函数参数使Linktable的查询接口更加通用,有效地提高了接口的通用性。 我们还通过将linktable.h中不是在接口调用时必须内容转移到linktable.c中,这样可以有效地隐藏软件模块内部的实现细节,为外部调用接口的开发者提供更加简洁的接口信息,同时也减少外部调用接口的开发者有意或无意的破坏软件模块的内部数据。通过接口进行信息隐藏已经成为面向对象编程语言的标准做法,使用public和private来声明属性和方法对于外部调用接口的开发者是否可见。
(8)lab5.2
lab5.2中增加了Makefile文件。
为什么需要Makefile?
作为一个可重用的子系统,其他程序员在重用这个软件子系统时应该不需要了解这个子系统内部代码的组织方式,只需要了解调用接口和生成的目标文件,就可以方便的将子系统集成到自己的软件中。因此,menu子系统还需要有自带的构建系统。
什么是Makefile?
Makefile 文件,可以告诉make命令需要怎么样的去编译和链接程序。makefile关系到了整个工程的编译规则。一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。
Makefile代码如下所示:
# # Makefile for Menu Program # CC_PTHREAD_FLAGS = -lpthread CC_FLAGS = -c CC_OUTPUT_FLAGS = -o CC = gcc RM = rm RM_FLAGS = -f TARGET = menu OBJS = linktable.o menu.o all: $(OBJS) $(CC) $(CC_OUTPUT_FLAGS) $(TARGET) $(OBJS) .c.o: //.c.o,表示表示所有的 .o文件都是依赖于相应的.c文件的 $(CC) $(CC_FLAGS) $< clean: $(RM) $(RM_FLAGS) $(OBJS) $(TARGET) *.bak
(9)lab7
lab7.1对代码进行进一步分离,新增加文件menu.h,将对menu的操作的接口放到menu.h中。逻辑更加清楚,模块化思想很清晰。
lab7.2 增加了 readme.txt 文件,为用户提供了使用指南,menu项目结束。

浙公网安备 33010602011771号