C 速查手冊
單元 9 - 標頭檔
開發大型程式時,通常會把介面 (interface) 與實作 (implementation) 分開。這是說,常數 (constant) 、結構 (structure) 的定義與函數原型 (prototype) 放在標頭檔中,也就是副檔名為 .h 的檔案,此即為介面,然後把函數 (function) 的實際定義放在另一個 .c 的原始程式碼檔案裡,這就是實作。
實作檔須留意要用 #include 的前置處理器指令將標頭檔包含進來,至於實際程式的測試與執行,就另寫一個含有函數 main() 的 .c 的原始程式碼檔案,然後將實作檔與含有 main() 的原始檔一起編譯,便可產生可執行檔。
這裡以函數 exponent() 為例做簡單示範,以下為標頭檔 exponent.h
int exponent(int, int);
/* 《程式語言教學誌》的範例程式
http://kaiching.org/
檔名:exponent.h
功能:宣告函數 exponent() 的標頭檔
作者:張凱慶 */
以下為實作介面 exponent.c
#include "exponent.h"
int exponent(int a, int x)
{
int result = 1;
while (x > 0) {
result *= a;
x--;
}
return result;
}
/* 《程式語言教學誌》的範例程式
http://kaiching.org/
檔名:exponent.c
功能:指數函數的實作
作者:張凱慶 */
以下為執行程式 exponentTest.c
#include <stdio.h>
#include "exponent.h"
int main(void)
{
int i;
for (i = 0; i <= 10; i++) {
printf("%2d%5d\n", i, exponent(2, i));
}
return 0;
}
/* 《程式語言教學誌》的範例程式
http://kaiching.org/
檔名:exponentTest.c
功能:指數函數的實作
作者:張凱慶 */
注意 exponent.c 的第 1 行
#include "exponent.h"
與 exponentTest.c 的第 3 行
#include "exponent.h"
實作檔與含有函數 main() 的執行檔都要將標頭檔 "exponent.h" 包含進來。
編譯時要同時編譯兩個檔案,如下
$ gcc exponent.c exponentTest.c |
$ a.out |
0 1 |
1 2 |
2 4 |
3 8 |
4 16 |
5 32 |
6 64 |
7 128 |
8 256 |
9 512 |
10 1024 |
$ |