文件其实并没有什么特别的,只不过是为了阅读和编程方便,把一些固定不变的常量及变量或者表达式放在一个文件里,便于日后编程调用,不致于每次都预先定义,文件扩展名为“.h”就表示头文件了,调用时只要把该文件包含到main程序中去就可以了。
你要把一个宏做成一个头文件完全可以,象编 程一样把程序写完,存为*.h就可以了. 把宏保存到头文件里即可。
如写入以下代码:
#define DEBUG 1
#define NUM_OF_BUF 8
保存为HOT.H
在MAIN函数前写入:
#include
就能在MAIN函数里调用了。 #include 的本质就是把对应的文件直接拷贝到这一行里面
要理解头文件,主要是要理解“声明”
C/C++中,所有使用到得变量、函数、类都要是声明过得,就是说,要有一行语句来告诉编译器,我有一个名字叫XXX的???类型的变量(函数、类)。
然后还有一个因素就是,在编译的时候,程序是按照每个.C或.CPP文件单独编译的。
也就是说,对于每个C文件中,如果都用到了同一个函数(比如printf),那么,我在每个对应文件中写一遍printf的声明明显是很麻烦的。所以我把这个声明单独写了一个文件,为了区别,我把扩展名记做.h,在需要使用对应的函数(类)的时候,我就不需要去拷贝函数的声明,而只需要#include对应头文件就可以了,系统自动帮你拷贝进来——C语言提供的头文件,按照函数功能分类好了,比如数学函数就都写在了math.h里面,一包含就全包含,不管你用没用到cos()这个函数或者其他什么。
当然,由于.h文件中也可以包含其他.h文件,所以为了不重复声明或定义,需要用宏做相应的处理,这个不是要理解的东西,而是照着写。
看到你的补充,在这里我也补充下答案
对于自己定义的函数,首先,肯定的是,你至少需要在一个C文件中定义它,否则链接会出错。当你想在任何一个文件中使用的时候,你只需要让这个文件包函数声明所在的头文件即可。
具体来说:
a.h中声明了了
int a( int x);
a.c中实现这个函数,需要有类似代码
#include "a.h"
//.....其他代码
int a(int x)
{
return x*x;
}
如果在b.c中想使用这个,则只要在b.c中这样就可以:
#include "a.h"
//....其他代码