关于在一个工程里,有许多个源文件,其中只有一个是主函数,其他的都是定义的函数,你如何实现?
现在将自己的笔记记录如下:
1、举一个最简单的例子:比如有一个main.c文件,另外一个是Prin.c,要在main.c中调用Prin.c中定义的函数,需要新建一个Prin.h文件,然后在该文件中定义这个函数:如void Print(int n);然后在main.c中#include"Prin.h",这里注意,只有系统文件采用include< >,别的文件用双引号。在windows下,IDE做好了编译的过程,直接运行main.c就OK了,但在linux下,就需要写一个makefile(当然 如果源文件较少,只需要运行命令“gcc -o main main.c Prin.c”就OK了),makefile的定义规则我也是看了些《跟我学Makefile》,当然我也只是学了一些皮毛,只懂得最基本的规则,具体的我也要继续学,makefile书写如下:
main:main.o Prin.o .o文件时中间目标文件。
(Tab键)gcc -o main main.o Prin.o main就是可执行文件
main.o:main.c Prin.h(这里面不需要自己再回到vim编辑器中看有什么头文件,只需要在shell脚本下,运行命令 gcc -MM main.o就显示了,这里面的输出结果就是:main.o:main.c Prin.h,如果是cc编辑器,就是-M)
(Tab) gcc main.c
Prin.h:Prin.c
(Tab)gcc Prin.c
clean:
具体书写自己查吧。
我查阅到关于这里的函数定义的规则:
对于某一文件中的函数,它可以直接引用本文件中所定义的函数和外部变量。如果要想引用别的文件中定义的函数或变量,则应在引用之前用
extern
,对此变量或函数进行说明。如果一个函数或外部变量在定义时前面加有
static
说明,那么就只有本文件内的函数能够使用它。但这里,我前面没定义,也同样实现了调用,我猜是默认为extern了,这只是我猜的。