高質量C++/C程式設計指南(第1章 檔案結構) (轉)
章 結構
每個C++/C通常分為兩個檔案。一個檔案用於儲存程式的宣告(declaration),稱為標頭檔案。另一個檔案用於儲存程式的實現(implementation),稱為定義(definition)檔案。
C++/C程式的標頭檔案以“.h”為字尾,C程式的定義檔案以“.c”為字尾,C++程式的定義檔案通常以“.cpp”為字尾(也有一些以“.cc”或“.cxx”為字尾)。
版權和版本的宣告
版權和版本的宣告位於標頭檔案和定義檔案的開頭(參見示例1-1),主要內容有:
(1)版權資訊。
(2)檔名稱,識別符號,摘要。
(3)當前版本號,作者/修改者,完成日期。
(4)版本歷史資訊。
:namespace prefix = o ns = "urn:schemas--com::office" />
/*
* Copyright (c) 2001,上海貝爾有限公司應用事業部
* All rights reserved.
*
* 檔名稱:filename.h
* 檔案標識:見管理計劃書
* 摘 要:簡要描述本檔案的內容
*
* 當前版本:1.1
* 作 者:輸入作者(或修改者)名字
* 完成日期:2001年7月20日
*
* 取代版本:1.0
* 原作者 :輸入原作者(或修改者)名字
* 完成日期:2001年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目錄,將定義檔案儲存於目錄(可以是多級目錄)。
如果某些標頭檔案是私有的,它不會被使用者的程式直接引用,則沒有必要公開其“宣告”。為了加強資訊隱藏,這些私有的標頭檔案可以和定義檔案存放於同一個目錄。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-991829/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 高質量C/C++程式設計指南總結(二)—— 檔案版式C++程式設計
- 高質量C++/C程式設計指南(第5章 常量) (轉)C++C程式程式設計
- 高質量C++/C程式設計指南(第2章 程式的版式) (轉)C++C程式程式設計
- 高質量C++/C程式設計指南(第6章 函式設計) (轉)C++C程式程式設計函式
- 高質量C++/C程式設計指南(第11章 其它程式設計經驗) (轉)C++C程式程式設計
- 高質量C++/C程式設計指南(第3章 命名規則) (轉)C++C程式程式設計
- 高質量C++/C程式設計指南(前 言) (轉)C++C程式程式設計
- 高質量C++/C程式設計指南(第8章 C++函式的高階特性) (轉)C++C程式程式設計函式
- 高質量C/C++程式設計指南總結(八)—— C++高階特性C++程式設計
- 高質量C++/C程式設計指南(參考文獻) (轉)C++C程式程式設計
- 高質量C++/C程式設計指南(林銳)C++C程式程式設計
- 高質量C++/C程式設計指南(第4章 表示式和基本語句) (轉)C++C程式程式設計
- 高質量C++/C程式設計指南(附錄B :C++/C試題) (轉)C++C程式程式設計
- 高質量C/C++程式設計指南總結(三)—— 命名規則C++程式設計
- 《高質量C++程式設計指南》讀書筆記(一) (轉)C++程式設計筆記
- 高質量C++/C程式設計指南(第10章 類的繼承與組合) (轉)C++C程式程式設計繼承
- 《高質量C/C++程式設計指南》學習筆記C++程式設計筆記
- 高質量C++/C程式設計指南(第9章 類的建構函式、解構函式與賦值函式) (轉)C++C程式程式設計函式賦值
- C++/C高質量程式設計指南-筆記C++程式設計筆記
- 《高質量C++/C程式設計指南》第9章:類的建構函式、解構函式與賦值函式C++C程式程式設計函式賦值
- 高質量C++/C程式設計指南(附錄C :C++/C試題的答案與評分標準) (轉)C++C程式程式設計
- C++高質量程式設計C++程式設計
- 一道C++的題(從《高質量C++程式設計指南》中改編)(1千字)C++程式設計
- Google C++ 程式設計風格指南:標頭檔案GoC++程式設計
- 《高質量程式設計指南——C++C語言(第3版)(修訂版)》圖書資訊程式設計C++C語言
- 用於測試C++/C程式設計師的基本程式設計技能、程式設計質量以及對C++/C的理解程度的一份考卷試題 (轉)C++C程式程式設計師
- C++高階程式設計pdfC++程式設計
- Google C++ 程式設計風格指南:其他 C++ 特性GoC++程式設計
- Google C++程式設計風格指南(三):C++ 類GoC++程式設計
- Google C++程式設計風格指南GoC++程式設計
- 《C++程式設計教程(第3版)》——第1章,第2節從C到C++C++程式設計
- C++程式設計批評系列 繼承的本質(轉)C++程式設計繼承
- Google C++ 程式設計風格指南:類GoC++程式設計
- Google C++ 程式設計風格指南:格式GoC++程式設計
- c++/tcl程式設計總結C++程式設計
- 如何招聘到高質量的程式設計師?程式設計師
- Google C++ 程式設計風格指南:作用域GoC++程式設計
- Google C++ 程式設計風格指南:註釋GoC++程式設計