讀古今文學網 > C語言解惑 > 23.3 一個源文件和一個頭文件 >

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)源文件:包含頭文件、編寫相應主程序和函數。