源文件和頭文件的關係

簡單理解,頭文件就是在源文件頭部用來被包含的文件。這裏的包含是#include預處理命令,包含的過程就是把頭文件的文本完整地複製到源文件中的對應位置,然後刪除此行#include預處理命令。
由於文件包含是預處理器在翻譯過程之前完成的,因此和整個編譯過程沒有必然聯繫,一個源文件在與處理過程中可以進行任意次文件包含。對於重複的代碼(例如函數聲明和宏定義),可以寫在頭文件中給多個源文件包含。當然包含之後會不會對編譯造成影響,要看頭文件和源文件的內容。
習慣上,一個源文件對應了一個頭文件,其中頭文件中爲extern函數和對象聲明和宏定義,源文件裏爲對應的全局/static對象定義和extern/static函數的實現。但是並非一定要按照這個習慣。頭文件的存在是爲了被源文件包含,如果只被一個源文件包含,那麼相當於把這個頭文件放進源文件中代替#include行,此時頭文件不是必需的。頭文件也可以不對應源文件,當這個頭文件聲明的函數和對象都定義在庫文件中時——比較常見的例子就是標準庫的頭文件。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章