在实现进度条之前我们要了解一些有关实现进度条的知识。例如回车和makefile的使用
自动化构建工具:makefile
makefile实现的目的就是可以进行自动化的编译与自动化清理,即实现好了makefile之后,仅仅使用make指令就可以直接完成程序的编译过程。
makefile的实现
文件的时间属性
一个文件具有三种时间:
- Access time:文件的最近一次的访问时间
- Modify time:文件的最近一次的内容修改时间
- Change time:文件的最近一次属性修改的时间
可以用stat+file_name进行查看文件的三个时间属性:
Modify
而我们对文件进行 ll(ls-l) 命令时查看到的是文件的什么时间呢??(可以采用控制变量的方法去逐一改变各个时间)
其实ll+文件的时候展开的其实就是Modify time,也就是文件最近一次的内容修改时间。
所以这里可想而知作为一个文件最具有代表性的时间肯定就是Modify time(文件最近一次内容修改的时间)
所以回归到问题,一个文件什么时候可以再次被进行编译呢??当然是一个新文件,也就是文件的Modify time进行更新过,也就是源文件与可执行程序对比时间(Modify time)。
touch+一个现有文件: 更行文件的各个时间,如果想改变某一个特定时间就-a(访问)-m(内容)-c(属)。
Change
还有一点就是文件的属性时间是比较特别的,也就是不论什么时间改变的话,文件的属性时间都会陪同一起进行更改
Assess
文件的访问时间也是一个特别的存在,访问文件可以说是对一个文件最频繁的操作,所以说,文件的Assess time经常会进行更改,但是实际上并不是这样。
我们知道文件是存放在硬盘当中,而硬盘又属于外设,所以相较于内设的访问效率会低很多,这就是为啥我们在打开文件时不直接在硬盘中进行而是将文件加载进入cpu,通过cou进行文件的访问,所以说,我们并不会实时的访问硬盘设备,也不会频繁的将文件加载进cpu,更不会没访问一次文件就更改一下文件的访问时间,什么时候更改可以说看你的计算机心情,每个计算机的心情肯定都不是一样的。
回车与换行
回车(\n):光标回到该行的起始位置处
换行(\r):光标换到下一行
回车换行(\n\r):光标进入下一行的行首位置处
其实windows下的回车键的功能就是执行的回车换行的功能
回车键(\r)的认识
换行键(\n)的认识.
换行键其实还有一个隐藏功能:对缓冲区的数据进行行刷新
其实我们在键盘上进行输入的数据会先进入输入缓冲区里,而输出的数据也同样会先进入输出缓冲区,并不是直接在终端显示出来。但是换行符(\n)的作用恰恰就是对缓冲区的数据进行行刷新,所以会直接显示在终端中。
粗略实现进度条代码
其实实现进度条所用到的主要就是以上两大重点:makefile与换行键的使用。
同VS一样,也是使用不同的文件实现该进度条:
先看一下自动化构建工具makefile:
因为头文件会自动调用,所以在编译时就不需要编译头文件了。
主要就是看一下代码的实现了
这里其实是有很多可以改进的地方的,例如进度百分比可以用分数的形式 ,或者进度框里的字符换一下,卡顿一下等等
优化代码
这一版的优化就存在小数占比
再次优化
这次的效果就是可以模拟加载卡顿的情况
最终实现的代码完整版 (会的话可以直接跳过前面看这个)
这次不仅布局上优化,而且还会卡顿一下