.hpp,本質就是將.cpp的實現**混入.h標頭檔案當中,定義與實現都包含在同一檔案,則該類的呼叫者只需要include該.hpp檔案即可,無需再將cpp加入到project中進行編譯。而實現**將直接編譯到呼叫者的obj檔案中,不再生成單獨的obj,採用hpp將大幅度減少呼叫project中的cpp檔案數與編譯次數,也不用再發布lib與dll檔案,因此非常適合用來編寫公用的開源庫。
hpp的優點不少,但是編寫中有以下幾點要注意:
1、是header plus plus的簡寫。(.h和.hpp就如同.c和.cpp似的)
2、與.h類似,.hpp是c++程式頭檔案格式。
3、是vcl專用的標頭檔案,已預編譯。
4、是一般模板類的標頭檔案。
5、一般來說,.h裡面只有宣告,沒有實現,而.hpp裡宣告實現都有,後者可以減少.cpp的數量。
6、.h裡面可以有using namespace std,而.hpp裡則無。
7、不可包含全域性物件和全域性函式。
由於.hpp本質上是作為.h被呼叫者include的,所以當hpp檔案中存在全域性物件或者全域性函式,而該hpp被多個呼叫者include時,將在鏈結時導致符號重定義錯誤。要避免這種情況,需要去除全域性物件,將全域性函式封裝為類的靜態方法。
---------------------
原文:
hpp與 h的區別
hpp,其實質就是將.cpp的實現 混入.h標頭檔案當中,定義與實現都包含在同一檔案,則該類的呼叫者只需要include該hpp檔案即可,無需再將cpp加入到project中進行編譯。而實現 將直接編譯到呼叫者的obj檔案中,不再生成單獨的obj,採用hpp將大幅度減少呼叫 project中的cpp...
hpp與 h的區別
hpp,本質就是將.cpp的實現 混入.h標頭檔案當中,定義與實現都包含在同一檔案,則該類的呼叫者只需要include該.hpp檔案即可,無需再將cpp加入到project中進行編譯。而實現 將直接編譯到呼叫者的obj檔案中,不再生成單獨的obj,採用hpp將大幅度減少呼叫project中的cpp檔...
h與 hpp檔案的區別
c 中的.hpp檔案 hpp,其實質就是將.cpp的實現 混入.h標頭檔案當中,定義與實現都包含在同一檔案,則該類的呼叫者只需要include該hpp檔案即可,無需再 將cpp加入到project中進行編譯。而實現 將直接編譯到呼叫者的obj檔案中,不再生成單獨的obj,採用hpp將大幅度減少呼叫 ...