1. ctags命令

    ctags是vim下方便代码阅读的工具。

       首先呢,先创建ctag.h,ctag.c,test.c三个文件。

       ctag.h 中为函数的声明。

       test.c中为函数的定义。

       ctag.c为主函数。

      wKioL1dJQrvRNgnRAABIL5c5aYY511.png


    使用ctrl + R这条命令会在当前目录下产生一个“tags”文件,当用户在当前目录中运行vi时,会自动载入此tags文件。

   将光标放在函数处时,使用 ctrl + ] 时,跳到函数的定义处。使用 ctrl + t时,跳到函数的声明处。

2.make命令

  make 是命令,而Makefile是一个文件,在make命令执行时,需要一个Makefile文件,以告诉make命令需要怎样去编译和链接程序。

   Makefile---自动化编译,一旦写好,只需一个make命令,整个工程完全自动编译,极大的提高的软件开发的效率。


  在介绍make之前呢,我们先来理解一下‘\n’。

  我们都知道‘\n’是回车换行。

  回车是光标重新回到本行开头(可能会覆盖之前的内容),换行是光标往下一行(不一定到下一行行首)。

首先呢,先来看这样一个例子:


printf语句中'\n',在执行时,屏幕上会直接输出hello bit,然后等待两秒。结果如右图所示。

  wKiom1dJLSqj6FyGAAAnRR0rzZY712.png        wKioL1dJLt6zWui8AAASxUTz2mo401.png


若将printf语句中的'\n'去掉,屏幕上会先等待两秒,然后输出hello bit。结果如下图所示。

wKioL1dJLt_wRU2VAAAQh8Ex1Uk144.png


注:在执行语句的过程中,若遇到'\n'时,会刷新缓冲区。所以在printf语句中存在'\n'时,执行此语句时,遇到'\n',所以会直接在屏幕上输出结果。


  上述已经说过,make在执行的时候,需要一个Makefile文件。

  Makefile文件中主要是文件的依赖关系和依赖方式。

  在定义好依赖关系后,后续的那一行定义了如何生成目标文件的操作系统命令,一定要以Tab键开头。make并不管命令是怎么工作的,他只管执行所定义的命令。

   

  make是如何工作的?

  (1) make会在当前目录下找名字叫“Makefile”或“makefile”。

  (2) 如果找到,它会找文件中的第一个目标文件.o。

  (3) 如果文件不存在,它会根据依赖关系找.s文件。

  (4) 若.s文件不存在,make会在当前文件中找目标为.s文件的依赖性即.i。

  (5) 若.i文件不存在,根据依赖关系会找.c文件,当然.c文件时存在的啦。于是,make会生成一个.o文件,然后去执行文件。


  这就是整个make的依赖性,make会一层一层去找文件的依赖关系,直到最终编译出第一个目标文件。在找的过程中,如果出错,如:最后被依赖的文件找不到,make会直接退出,并报错,对于定义的命令的错误或者编译不成功,make不管。make只管文件的依赖性,即如果找到依赖关系之后,冒号后边的文件不存在,make也不工作。


  清理目标文件的规则:

  每一个Makefile中都应该写一个清理目标文件(.o和执行文件)的规则,这不仅便于重编译,也有利于保持文件的清洁。

  .PHONY:clean

  clean:

       rm -f 文件

  .PHONY后边的clean事宜“伪目标”。在rm命令前面加上一个小减号的意思是,就算某些文件处理问题,不要管,继续做后边的事情。不要将clean的规则放到文件的开头,不然出成为make的默认目标。

clean从来都放在文件的最后

                                     proc.c文件

wKiom1dJQJrCQnQ3AABS_hxNwAk047.png

  注:fflush(stdout):清空输出缓冲区,并把缓冲区内容输出

                                    Makefile文件

wKiom1dJP1mjqwCAAABRPUK8koc875.png


结果:

    wKioL1dJQeyghgXbAAAzxG4e35E562.png