c c 標頭檔案的作用

2021-06-26 22:07:13 字數 2111 閱讀 5503

每個c++/c程式通常分為兩個檔案。乙個檔案用於儲存程式的宣告(declaration),稱為標頭檔案。另乙個檔案用於儲存程式的實現(implementation),稱為定義(definition)檔案。

c++/c程式的標頭檔案以「.h」為字尾,c程式的定義檔案以「.c」為字尾,c++程式的定義檔案通常以「.cpp」為字尾(也有一些系統以「.cc」或「.cxx」為字尾)。

1,標頭檔案可以定義所用的函式列表,方便查閱你可以呼叫的函式;

2,標頭檔案可以定義很多巨集定義,就是一些全域性靜態變數的定義,在這樣的情況下,只要修改標頭檔案的內容,程式就可以做相應的修改,不用親自跑到繁瑣的**內去搜尋。

3,標頭檔案只是宣告,不佔記憶體空間,要知道其執行過程,要看你標頭檔案所申明的函式是在哪個.c檔案裡定義的,才知道。

4,他並不是c自帶的,可以不用。

5,呼叫了標頭檔案,就等於賦予了呼叫某些函式的許可權,如果你要算乙個數的n次方,就要呼叫pow()函式,而這個函式是定義在math.c裡面的,要用這個函式,就必需呼叫math.h這個標頭檔案。

1.2 標頭檔案的結構

標頭檔案由三部分內容組成:

(1)標頭檔案開頭處的版權和版本宣告(參見示例1-1)。

(2)預處理塊。

(3)函式和類結構宣告等。

假設頭檔名稱為 graphics.h,標頭檔案的結構參見示例1-2。

【規則1-2-1】為了防止標頭檔案被重複引用,應當用ifndef/define/endif結構產生預處理塊。

【規則1-2-2】用 #include 

格式來引用標準庫的標頭檔案(編譯器將從標準庫目錄開始搜尋)。

【規則1-2-3】用 #include 「filename.h」 格式來引用非標準庫的標頭檔案(編譯器將從使用者的工作目錄開始搜尋)。

【建議1-2-1】標頭檔案中只存放「宣告」而不存放「定義」

在c++ 語法中,類的成員函式可以在宣告的同時被定義,並且自動成為內聯函式。這雖然會帶來書寫上的方便,但卻造成了風格不一致,弊大於利。建議將成員函式的定義與宣告分開,不論該函式體有多麼小。

【建議1-2-2】不提倡使用全域性變數,盡量不要在標頭檔案中出現象extern int value 這類宣告。

// 版權和版本宣告見示例1-1,此處省略。

#ifndef 

graphics_h 

// 防止graphics.h被重複引用

#define 

graphics_h

#include 

// 引用標準庫的標頭檔案

…#include 「myheader.h」 

// 引用非標準庫的標頭檔案

…void function1(…); 

// 全域性函式宣告

…class box 

// 類結構宣告

;#endif 

示例1-2 c++/c標頭檔案的結構

1.3 定義檔案的結構

定義檔案有三部分內容:

(1) 

定義檔案開頭處的版權和版本宣告(參見示例1-1)。

(2) 

對一些標頭檔案的引用。

(3) 

程式的實現體(包括資料和**)。

假設定義檔案的名稱為 graphics.cpp,定義檔案的結構參見示例1-3。

// 版權和版本宣告見示例1-1,此處省略。

#include 「graphics.h」 

// 引用標頭檔案

…// 全域性函式的實現體

void function1(…)

// 類成員函式的實現體

void box::draw(…)

示例1-3 c++/c定義檔案的結構

1.4 標頭檔案的作用

早期的程式語言如basic、fortran沒有標頭檔案的概念,c++/c語言的初學者雖然會用使用標頭檔案,但常常不明其理。這裡對頭檔案

的作用略作解釋:

(1)通過標頭檔案來呼叫庫功能。在很多場合,源**不便(或不准)向使用者公布,只要向使用者提供標頭檔案和二進位制的庫即可。用

戶只需要按照標頭檔案中的介面宣告來呼叫庫功能,而不必關心介面怎麼實現的。編譯器會從庫中提取相應的**。

(2)標頭檔案能加強型別安全檢查。如果某個介面被實現或被使用時,其方式與標頭檔案中的宣告不一致,編譯器就會指出錯誤,這

一簡單的規則能大大減輕程式設計師除錯、改錯的負擔。

C C 標頭檔案作用

參考 c標頭檔案 由來 那是乙個被遺忘的年代,在編譯器只認識.c cpp 檔案,而不知道.h是何物的年代。那時的人們寫了很多的.c cpp 檔案,漸漸地,人們發現在很多.c cpp 檔案中的宣告語句就是相同的,但他們卻不得不乙個字乙個字地重複地將這些內容敲入每個.c cpp 檔案。但更為恐怖的是,當...

C,C 標頭檔案的作用

在c語言家族程式中,標頭檔案被大量使用。一般而言,每個c c程式通常由標頭檔案 header files 和定義檔案 definition files 組成。標頭檔案作為一種包含功能函式 資料介面宣告的載體檔案,用於儲存程式的宣告 declaration 而定義檔案用於儲存程式的實現 impleme...

c c 標頭檔案中預編譯的作用

在標頭檔案中加入 ifndef或 ifdef等巨集定義,是為了防止重複宣告。我們知道,標頭檔案一般是用來宣告的,會被其他的原始檔和標頭檔案include,當被多個檔案include的時候就會造成重複宣告。為了使得只宣告一次,引入前面所說的巨集定義,一般以檔名大寫和 來當巨集的名字。這個巨集是給預處理...