<c++ primer> p186:
舉個例子fact函數的定義位於一個名為fact.cc的文件中,它的聲明名為Chapter6.h的頭文件中.顯然與其他用到fact函數的文件一樣,fact.cc應該包含Chapter6.h頭文件.另外,我們在名為factmain.cc的文件中創建main函數,main函數將用到fact函數.要生成可執行文件,必須要告訴程序我們用到的代碼在哪.如果我們修改了其中一個源文件,那麼只需要重新編譯那個改動了的文件.大多數編譯器提供了分離式編譯每個文件的機制,這一過程通常產生一個後綴名是.obj(windows)或者.o(unix)的文件,後綴名的含義是該文件包含對象代碼.接下來編譯器負責把對象文件鏈接在一起形成可執行文件.
c++程序使用一對同名的.c和.h文件的意義何在?
h文件中寫函數聲明,c文件中實現,這樣分離之後,如果其他c文件需要調用其中的函數只要包含同名的h頭文件即可。吧具體相同功能的函數放置在一個h頭文件中聲明也有助於分類。項目越大,你如果吧所有函數都寫在一個文件中,維護起來就更麻煩了,編譯的時候也是一個c文件一個c文件生成中間代碼,然後一起鏈接起來,這樣也便於維護。另外還要考慮庫的問題,比如你要使用動態庫,你如果在h文件中實現函數,那庫的意義就不存在了。