.h中一般放的是同名.c文件中定义的变量、数组、函数的声明,需要让.c外部使用的声明。
它的作用有:
1 方便开发:包含一些文件需要的共同的常量,结构,类型定义,函数,变量申明;
2 提供接口:对一个软件包来说可以提供一个给外界的接口(例如: stdio.h)。
它里面应该有:
不应该有: 变量定义, 函数定义。
(1)在头文件中使用的extern 关键字。
对于变量来讲,extern是必须的,表示此处仅仅是变量的声明。
( 某模块提供给其它模块调用的外部函数及数据需在.h中文件中冠以extern关键字声明)
对于函数来讲,extern是默认的,即使不加,也会表示是函数的声明。
(在某函数定义和声明前加关键字 static ,则表示该函数是模块内函数,只能在定义的.c文件中使用,链接器不能给其他模块调用此函数)
(2) include 重复包含头文件问题。
在头文件中使用如下方式,可以避免。
#ifndef _FILENAME_H,
#define _FILENAME_H
……
#endif
(3) 如果.c中的函数也需要调用同个.c中的其它函数,那么这个.c往往会include同名的.h,这样就不需要为声明和调用顺序而发愁了(C语言要求使用之前必须声明,而include同名.h一般会放在.c的开头)。有很多工程甚至把这种写法约定为代码规范,以规范出清晰的代码来。