C++中.h和.cpp的關係


       首先,我們可以將所有東西都放在一個.cpp文件內,然後編譯器就將這個.cpp編譯成.obj,即編譯單元。一個程序可以由一個編譯單元組成,也可以由多個編譯單元組成。如果你不想讓你的源代碼變得很難閱讀的話,就請使用多個編譯單元吧。

        一個.cpp對應一個.obj,然後將所有的.obj鏈接起來(通過一個叫鏈接器的程序),組成一個.exe,即程序。如果一個.cpp要用到另一個.cpp定義的函數怎麼辦,只需在這個.cpp中寫上它的函數聲明。

       鏈接器將所有的obj鏈接起來,但是如果碰巧有相同的函數或外部變量怎麼辦?C++可以通過一種叫做鏈接屬性的關鍵字來限定,某個函數是屬於整個程序公用的,還是隻在一個編譯單元obj裏面使用,這些關鍵字就是extern(外部鏈接)和static(內部鏈接)。

       此時,讓我們說說.h。其實沒有.h,程序也能很好的工作,但是當你發現一個外部鏈接的函數或外部變量,需要許多分聲明,因爲只要使用到該函數的單元,就必須寫一份聲明在那個.cpp裏面,如果要修改會很麻煩!!!

      .h就是爲了解決這個問題而誕生的,它包含了這些公共的東西,然後所有需要使用該函數的.cpp,只需要用#include包含進去便可,以後需要修改,只是修改一份內容。

       請注意不要濫用.h,不要在.h裏面寫代碼。#include並不是什麼申請指令,只是將指定文件的內容,原封不動的拷貝進來。



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