头文件是一种文本文件,使用文本编辑器将代码编写好之后,以扩展名.h保存就行了。
头文件中一般放一些重复使用的代码,例如函数声明,变量声明,常数定义,宏的定义等等。
当使用#i nclude语句将头文件引用时,相当于将头文件中所有内容,复制到#i nclude处。
为了避免因为重复引用而导致的编译错误,头文件常具有 #ifndef LABEL#define LABEL //代码部分#endif的格式。其中,LABEL为一个唯一的标号,命名规则跟变量的命名规则一样。常根据它所在的头文件名来命名,例如,如果头文件的文件名叫做hardware.h,那么可以这样使用:#ifndef __HARDWARE_H__#define __HARDWARE_H__ //代码部分#endif这样写的意思就是,如果没有定义__HARDWARE_H__,则定义__HARDWARE_H__,并编译下面的代码部分,直到遇到#endif。这样,当重复引用时,由于__HARDWARE_H__已经被定义,则下面的代码部分就不会被编译了,这样就避免了重复定义。
另外一个地方就是使用include时,使用引号与尖括号的意思是不一样的。使用引号(“”)时,首先搜索工程文件所在目录,然后再搜索编译器头文件所在目录。而使用尖括号(<>)时,刚好是相反的搜索顺序。