高質量C C程式設計指南 第1章 檔案結構

2021-04-13 03:08:07 字數 2575 閱讀 1509

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

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

( 1 )版權資訊。

( 2 )檔名稱,識別符號,摘要。

( 3 )當前版本號,作者 / 修改者,完成日期。

( 4 )版本歷史資訊。

* 檔名稱: filename.h

* 檔案標識: 見配置管理計畫書

* 當前版本: 1.1

* 作 者: 輸入作者(或修改者)名字

* 完成日期: 2023年7月20日

* 取代版本 : 1.0

* 原作者 : 輸入原作者(或修改者)名字

* 完成日期: 2023年5月10日

示例 1-1 版權和版本的宣告

1.2 標頭檔案的結構 標頭檔案由三部分內容組成:

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

( 2 )預處理塊。

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

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

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

l【規則 1-2-2用 #include < filename.h> 格式來引用標準庫的標頭檔案(編譯器將從標準庫目錄開始搜尋)。

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

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

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

2【建議 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 )標頭檔案能加強型別安全檢查。如果某個介面被實現或被使用時,其方式與標頭檔案中的宣告不一致,編譯器就會指出錯誤,這一簡單的規則能大大減輕程式設計師除錯、改錯的負擔。

1.5 目錄結構 如果乙個軟體的標頭檔案數目比較多(如超過十個),通常應將標頭檔案和定義檔案分別儲存於不同的目錄,以便於維護。

例如可將標頭檔案儲存於 include 目錄,將定義檔案儲存於 source 目錄(可以是多級目錄)。

如果某些標頭檔案是私有的,它不會被使用者的程式直接引用,則沒有必要公開其「宣告」。為了加強資訊隱藏,這些私有的標頭檔案可以和定義檔案存放於同乙個目錄。

高質量C C程式設計指南 第1章 檔案結構

第1章 檔案結構 每個c c程式通常分為兩個檔案。乙個檔案用於儲存程式的宣告 declaration 稱為標頭檔案。另乙個檔案用於儲存程式的實現 implementation 稱為定義 definition 檔案。c c程式的標頭檔案以 h 為字尾,c程式的定義檔案以 c 為字尾,c 程式的定義檔案...

高質量程式設計指南 第1章

規則1 2 1 為了防止標頭檔案被重複引用,應當用ifndef define endif結構產生預處理塊。一 為什麼會出現標頭檔案被重複引用的問題 在乙個cpp檔案中,可以包含多個標頭檔案,而標頭檔案間又是可以相互引用的,這就導致乙個cpp檔案中可能間接多次包含某個標頭檔案,如果標頭檔案中 沒有防止...

高質量C C程式設計指南 第5章 常量

常量是一種識別符號,它的值在執行期間恆定不變。c語言用 define來定義常量 稱為巨集常量 c 語言除了 define外還可以用const來定義常量 稱為const常量 如果不使用常量,直接在程式中填寫數字或字串,將會有什麼麻煩?1 程式的可讀性 可理解性 變差。程式設計師自己會忘記那些數字或字串...