当然可以!我用下面这个例子来演示多文件编译、链接。
首先,我们要设计一些函数、宏定义等信息能够被其他源代码文件所调用,这样才能最大程度的增加代码的利用程度、减少代码中的耦合度。我们要首先设计一个C代码的头文件(timer。
h文件),将这些宏定义、函数的声明(注意,不是函数定义)等能够反复利用的信息保存在里面:
// Filename: timer。h
#ifndef TIMER_H_INCLUDED // 第1、2、4行是为了防止代码被反复加载
#define TIMER_H_INCLUDED
void show_time(void);
#endif
函数光有声明并不能实现任何功能,所以我们要在timer。
c中实现在timer。h中的函数:
// Filename: timer。c
#include
// 在此处也要引入timer。h哦。
// 为什么?因为只有这样才能使用在timer。
h中定义的宏定义啊
// 比如,此处我们就能使用宏定义TIMER_H_INCLUDED,虽然他啥也没有
#include "timer。h"
void show_time(void)
{
printf("12:34:56
");
}
我们现在有了函数声明,也有了函数定义,现在就可以在别的源代码文件中复用这些函数和宏定义了。
我们现在假定有一个主程序文件main。c,其中包含了主函数main(),程序的起点就是从这个文件开始。
#include
// 只有加载了timer。h才能使用这些函数和宏定义
#include "timer。
h"
int main(void)
{
printf("What's the time now?
");
show_time();
return 0;
}
为了方便起见,我将main。
c、timer。c和timer。h都保存在了同一个目录内。下面是编译、链接过程和执行结果:
其中,命令行第1行是使用MingGW对源代码文件main。c和timer。c进行编译,并将目标文件链接为可执行文件main。exe。
第2行则是执行main。exe后的运行结果。
全部