每個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的時候就會造成重複宣告。為了使得只宣告一次,引入前面所說的巨集定義,一般以檔名大寫和 來當巨集的名字。這個巨集是給預處理...