高質量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++程式設計指南總結(八)—— C++高階特性C++程式設計
- 高質量C++/C程式設計指南(林銳)C++C程式程式設計
- 高質量C/C++程式設計指南總結(三)—— 命名規則C++程式設計
- C++高階程式設計pdfC++程式設計
- C++ - 結構體轉cha*C++結構體
- Google C++ 程式設計風格指南:命名約定GoC++程式設計
- 程式設計體系結構(04):JavaIO流檔案管理程式設計JavaAI
- 條件編譯、多檔案程式設計、結構體編譯程式設計結構體
- C++核心程式設計C++程式設計
- C++日期和時間程式設計總結C++程式設計
- 程式設計二三事 - 如何從點滴做起開發高質量專案程式設計
- C++設計模式 - 總結C++設計模式
- Arduino程式設計從零開始 使用C和C++(第2版)UI程式設計C++
- 《Android C++ 高階程式設計:使用NDK Onur Cinar》pdf 附下載連結AndroidC++程式設計
- C++ 程式設計入門指南:深入瞭解 C++ 語言及其應用領域C++程式設計
- 物件導向程式設計(C++篇2)——構造物件程式設計C++
- 物件導向程式設計(C++篇3)——析構物件程式設計C++
- <<從0到1學C++>> 第2篇 認識C++程式導向程式設計的特點C++程式設計
- C++程式設計實現C++程式設計
- C++ 提高程式設計C++程式設計
- C++提高程式設計C++程式設計
- [轉載]程式設計師必備:書寫高質量SQL的30條建議程式設計師SQL
- C++高階應用_設計模式C++設計模式
- C++ 物件導向高階設計C++物件
- 小程式的專案結構設計
- C++入門程式設計----C++運算子(8)C++程式設計
- C++資料結構和pb資料結構的轉換C++資料結構
- Windows 程式設計簡介從C/C++到Windows程式設計Windows程式設計C++
- 《C++程式與設計》(第 3 版)課堂作業 Work 12C++
- 【程式設計素質】程式設計思想總結程式設計
- iOS 編寫高質量Objective-C程式碼iOSObjectC程式
- C/C++ 檔案讀寫C++
- 物件導向程式設計C++物件程式設計C++
- C++ & Intel MKL 混合程式設計C++Intel程式設計
- C++核心程式設計筆記C++程式設計筆記
- c++簡單程式設計-3C++程式設計
- C++提高程式設計-模板C++程式設計
- C++提高程式設計-STLC++程式設計