/

C 標頭檔案

C 標頭檔案

如何使用 C 標頭檔案將程式分割成多個檔案

簡單的程式可以放在單一個檔案中,但當程式變得越來越龐大時,將它們全部放在一個檔案中將變得不可能。

您可以將程式的一部分放在一個獨立的檔案中,然後建立一個標頭檔案

標頭檔案看起來像一個普通的 C 檔案,只是以 .h 結尾而不是 .c,且不同於函式的實作和程式的其他部分,它僅包含聲明

當您第一次使用 printf() 函式或其他輸入/輸出函式時,您已經使用過標頭檔案,並且您必須輸入:

1
#include <stdio.h>

來使用它。

#include 是一個預處理器指示。

預處理器會在標準庫中查找 stdio.h 檔案,因為您在它周圍使用了尖括號。要包含自己的標頭檔案,您將使用引號,就像這樣:

1
#include "myfile.h"

上述將會在當前資料夾中查找 myfile.h

您還可以使用資料夾結構來管理庫:

1
#include "myfolder/myfile.h"

讓我們舉個例子。這個程式計算從給定年份至今的年數:

1
2
3
4
5
6
7
8
9
10
#include <stdio.h>

int calculateAge(int year) {
const int CURRENT\_YEAR = 2020;
return CURRENT\_YEAR - year;
}

int main(void) {
printf("%u", calculateAge(1983));
}

假設我們想將 calculateAge 函式移到一個獨立的檔案中。

我們建立一個 calculate_age.c 檔案:

1
2
3
4
int calculateAge(int year) {
const int CURRENT\_YEAR = 2020;
return CURRENT\_YEAR - year;
}

還有一個 calculate_age.h 檔案,我們在其中放置 函式原型,與 .c 檔案中的函式相同,但不包含函式體:

1
int calculateAge(int year);

現在在主 .c 檔案中,我們可以刪除 calculateAge() 函式的定義,並導入 calculate_age.h,這樣 calculateAge() 函式就可以使用了:

1
2
3
4
5
6
#include <stdio.h>
#include "calculate\_age.h"

int main(void) {
printf("%u", calculateAge(1983));
}

不要忘記,要編譯由多個檔案組成的程式,您需要在命令行中列出它們,像這樣:

1
gcc -o main main.c calculate\_age.c

對於更複雜的設定,需要使用一個 Makefile 文件來告訴編譯器如何編譯程式。

tags: [“c”, “header files”, “preprocessor”, “programming”]