本内容参照Linux c 软件工程师(C语言)实用教程
在设计开发大型程序时,如果把已经编写好的函数分别保存下来,以备应用在其他程序里面,可以提高程序的开发效率。
上面是书上说的话,实际程序肯定是这样的,把很多函数放在一个文件里,想想就头大。
下面就以实例说明怎么分别保存到不同的文件中。
实列要求是这样的:
设计一个程序,要求计算输入的整数的平均值,并将此程序分割成多个小文件。
-
- root@mkx:~/learn/mulitFile# cat main.c
- #include
- #include "cal.h"
- int main()
- {
- int i,j,k;
- printf("请输入第一个整数:");
- scanf("%d", &i);
- printf("请输入第二个整数:");
- scanf("%d", &j);
- k = max(i,j);
- printf("最大值是:%d\n", k);
- return 0;
- }
- root@mkx:~/learn/mulitFile#
-
- root@mkx:~/learn/mulitFile# cat cal.c
- int max(int x, int y)
- {
- if(x>y)
- return x;
- else
- return y;
- }
- root@mkx:~/learn/mulitFile#
-
- root@mkx:~/learn/mulitFile# cat cal.h
- int max(int x, int y);
- root@mkx:~/learn/mulitFile#
-
- root@mkx:~/learn/mulitFile# gcc main.c cal.c -o test1
- root@mkx:~/learn/mulitFile# ./test1
- 请输入第一个整数:3
- 请输入第二个整数:5
- 最大值是:5

过程是很简单,就是一个include cal.h头文件不就可以了吗?
那程序是如果找到cal.c里面的max函数的实现呢?
那是因为gcc会在当前路径找这些函数实现,这里就是在cal.o里面找到max的函数实现,然后,然后把声明的函数max与实现函数的max,链接起来,这就是链接阶段的任务。
当然,不仅找当前路径下的,还会去找系统的默认路径/usr/lib/下面找
这个,我以前也疑惑,其是怎么找到函数实现,其实,就是这样,一点一点查找的,然后再链接到声明,就这么简单。