C 速查手冊

標頭檔

開發大型程式時,通常會把介面 (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
$

回 C 速查手冊首頁