每個c++/c程式通常分為兩個檔案。乙個檔案用於儲存程式的宣告(declaration),稱為標頭檔案。另乙個檔案用於儲存程式的實現(implementation),稱為定義(definition)檔案。
c++/c程式的標頭檔案以「.h」為字尾,c程式的定義檔案以「.c」為字尾,c++程式的定義檔案通常以「.cpp」為字尾(也有一些系統以「.cc」或「.cxx」為字尾)。
(1)版權資訊。
(2)檔名稱,識別符號,摘要。
(4)版本歷史資訊。
* 檔名稱:filename.h
* 檔案標識:見配置管理計畫書
* 當前版本:1.1
* 作 者:輸入作者(或修改者)名字
* 完成日期:2023年7月20日
* 取代版本:1.0
* 原作者 :輸入原作者(或修改者)名字
* 完成日期:2023年5月10日
示例1-1 版權和版本的宣告
標頭檔案由三部分內容組成:
(1)標頭檔案開頭處的版權和版本宣告(參見示例1-1)。
(2)預處理塊。
(3)函式和類結構宣告等。
假設頭檔名稱為 graphics.h,標頭檔案的結構參見示例1-2。
l【規則1-2-1】為了防止標頭檔案被重複引用,應當用ifndef/define/endif結構產生預處理塊。
l【規則1-2-2】用 #include 格式來引用標準庫的標頭檔案(編譯器將從標準庫目錄開始搜尋)。
l【規則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) 定義檔案開頭處的版權和版本宣告(參見示例1-1)。
(2) 對一些標頭檔案的引用。
(3) 程式的實現體(包括資料和**)。
假設定義檔案的名稱為 graphics.cpp,定義檔案的結構參見示例1-3。
// 版權和版本宣告見示例1-1,此處省略。
#include 「graphics.h」 // 引用標頭檔案
…// 全域性函式的實現體
void function1(…)
// 類成員函式的實現體
void box::draw(…){…
示例1-3 c++/c定義檔案的結構
早期的程式語言如basic、fortran沒有標頭檔案的概念,c++/c語言的初學者雖然會用使用標頭檔案,但常常不明其理。這裡對頭檔案的作用略作解釋:
(1)通過標頭檔案來呼叫庫功能。在很多場合,源**不便(或不准)向使用者公布,只要向使用者提供標頭檔案和二進位制的庫即可。使用者只需要按照標頭檔案中的介面宣告來呼叫庫功能,而不必關心介面怎麼實現的。編譯器會從庫中提取相應的**。
(2)標頭檔案能加強型別安全檢查。如果某個介面被實現或被使用時,其方式與標頭檔案中的宣告不一致,編譯器就會指出錯誤,這一簡單的規則能大大減輕程式設計師除錯、改錯的負擔。
如果乙個軟體的標頭檔案數目比較多(如超過十個),通常應將標頭檔案和定義檔案分別儲存於不同的目錄,以便於維護。
例如可將標頭檔案儲存於include目錄,將定義檔案儲存於source目錄(可以是多級目錄)。
如果某些標頭檔案是私有的,它不會被使用者的程式直接引用,則沒有必要公開其「宣告」。為了加強資訊隱藏,這些私有的標頭檔案可以和定義檔案存放於同乙個目錄。
linux標頭檔案說明
標頭檔案 說明 驗證程式斷言 c p i o歸檔值 字元型別 目錄項出錯碼 檔案控制 浮點常數 檔案樹漫遊 grp.h 組檔案 l a n g i n f o h 語言資訊常數 l i m i t s h 實施常數 l o c a l e h 本地類別 m a t h h 數學常數 n l t y ...
Linux標頭檔案說明
標頭檔案 說明 驗證程式斷言 c p i o歸檔值 字元型別 目錄項出錯碼 檔案控制 浮點常數 檔案樹漫遊 g r p h 組檔案 l a n g i n f o h 語言資訊常數 l i m i t s h 實施常數 l o c a l e h 本地類別 m a t h h 數學常數 n l t ...
linux標頭檔案說明
標頭檔案 說明 驗證程式斷言 c p i o歸檔值 字元型別 目錄項出錯碼 檔案控制 浮點常數 檔案樹漫遊 g r p h 組檔案 l a n g i n f o h 語言資訊常數 l i m i t s h 實施常數 l o c a l e h 本地類別 m a t h h 數學常數 n l t ...