1、先不管头文件(预编译),在程序编译时,程序都是先从main()函数开始进行编译的,一般的程序都是这样的:
(1)#include “A.h”
delay()
{
...
}
main();
{
delay()
…
}
分析:这里由于delay()在main()函数之前,所以main()调用delay()时,delay()不需要声明。
(2)#include “A.h”
void delay(); //delay()函数声明
main()
{
delay(); //delay()函数调用
…
}
delay() //delay()函数定义
{
...
}
分析:这里由于delay()在main()函数之后,所以main()调用delay()时,delay()需要声明。
2、当我们为了程序能够更加的清晰,易于分析理解,往往需要将程序进行模块化,也就是将特定的功能模块给封装起来。
但是源程序的运行也是如前面1步骤一样,.c文件同样都是从main()函数开始编译,当有调用其他函数时,则要加上相应的头文件(delay.h , delay函数声明),然后再运行(调用)相应的.c文件(delay.c, delay函数定义)。
当我进行模块化的时候,程序运行则是跟(2)是一样的。需要在main()前面声明main()调用的函数。
3.模块化实例
用户自己编写:delay.h ,delay.c
delay.h 文件
------------------------------
void delay(); //delay函数声明
delay.c 文件
-----------------------------------
delay() //delay函数定义
{
…
}
main.c 文件
---------------------------------------
#include “A.h”
#include “delay.h” //delay函数声明在delay.h内
main()
{
delay(); //delay函数调用
….
}
注意:当在main()函数中调用运行delay()函数时,此时是调用了delay.c 文件中的delay()函数。
记住一点:所有的.c文件其实是相当于一个整体的.c文件,运行的过程也和我们写一个.c文件的过程是一样,之所以要分开多个.c文件,则是为了我们便于方便管理,程序的模块化。