天天看點

C++頭檔案和源檔案

c++程式來說,基本上來說都是要把源檔案和頭檔案分别編寫。一般都是代表一個基本功能的源檔案引用相應的頭檔案。

一個 相關功能的子產品可能有若幹對源檔案和頭檔案組成。這是基于元件程式設計的核心。

在我看來,他的好處是巨大的,是java不可比拟的,也是不可複制的:

c語言中頭檔案中一般定義了函數的聲明、結構體的定義、宏定義。(常量和全局變量最好放到源檔案中)

1) 從業務擴充性上看:頭檔案中放函數的聲明,函數由源檔案實作,這就是将面向接口程式設計:接口和實作分開,這在面對業務變更頻繁的需求中技術實作的好處是顯而易見的--隻要定義出良好地、擴充性高的接口,實作是可以很友善的更換。

2) 從程式架構上看:代碼在在大型程式中 需要分成不同的子產品,單一子產品中又可能分為不同的業務功能單元,他們間有很多互相的調用。

頭檔案中的方法聲明、結構體定義、宏就都可以充當這部分的子產品與子產品間、業務功能機關間的接口調用。子產品與子產品間,功能單元與功能單元間都是面向接口的調用,耦合性低,這正是基于元件程式設計的核心思想。

3) 從某些技術角度實作上看:頭檔案可通過宏定義來保證類定義、結構體定義、宏定義的唯一性。确實很友善,不容易出錯。

在用makefile編譯程式時,各個功能單元單獨編譯,構成中間檔案.最終這些中間檔案連結成可執行程式,在這些中間檔案中重複引用同一頭檔案是不可避免的。但如果頭檔案有保護性程式設計就可以很容易保證類、結構體、宏定義的唯一性 ----最終連結成可執行程式時,可執行程式中代碼區中隻會有唯一的類、結構體、宏的定義,其他都因為不滿足唯一性保護失效