23.3 一个源文件和一个头文件

【例23.4】将23.2节的源文件c23_3.c改造为使用一个源文件和一个头文件的程序结构。

【解答】这时要为源文件设计自己的头文件,即将其改造为两个文件。将第一部分的3条语句从c23_3.c文件中取出,放到一个名为c23_4.h的头文件中。下面是头文件的内容。


//
头文件c23_4.h
#include <stdio.h>          //1
包含stdio.h
头文件
const int NUM=100
;          //2 
定义常量变量NUM=100
int max
(int
,int
);          //3 
函数max
的原型声明
  

这里使用const定义常量变量代替原来使用#define语句定义的宏定义,以便演示const语句的使用方法。将剩下的c23_3.c的内容改为c23_4.c。

产生头文件的方法与产生C程序源文件的方法类似,具体方法如下。

(1)假设已经产生如图23-2所示的项目c23_4和源文件c23_4.c。用鼠标选中“Header Files”,然后使用文件菜单的“New”命令,弹出如图23-3所示的“New”对话框。

图23-2 产生的c6.h示意图

图23-3 添加头文件c23_4.h示意图

(2)选择图23-3的Files列表框中的“C/C++Header Files”项,在右边的“File”框中输入c23_4(因为默认为后缀.h文件,所以不必输入c23_4.h)即可。

(3)在右边的编辑框中编辑头文件c23_4.h。编辑结果参见图23-2。

由此可见,头文件中除了用来编写预处理命令和声明函数原型之外,还可以声明或定义全局变量。

这种结构要求在源文件c23_4.c中,使用#include将自己设计的头文件c23_4.h包含进去。一般来讲,这个头文件在项目目录c23_4之下,所以应该使用双引号。即


#include "c23_4.h"
  

下面是源程序文件c23_4.c的内容。


//
源文件c23_4.c
#include "c23_4.h"         //
注意使用双引号包含c6.h
int main
( 
)                //
主函数
{
     int a
,b
,x
;
     a=2
; b=3
;
     x=NUM*max
( a
,b 
);
     printf
("%d\n"
,x
);
     return 0
;
}
int max
(int m1
, int m2
)
{
     if 
(m1 > m2 
)   return m1+NUM
;
     else            return m2+NUM
;
}
  

头文件是不能编译的,选中源文件c23_4.c,编译并运行程序,输出10300。头文件的关联方式是系统设计好的,只要按照约定,就可以实现程序的功能。

可以用下面的简单构造模型表示它的构成。

(1)头文件:用来编写预处理命令、函数原型声明及全局变量声明或定义。

(2)源文件:包含头文件、编写相应主程序和函数。

《C语言解惑》