hpp與 h的區別

2021-09-25 16:02:52 字數 661 閱讀 9278

.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將大幅度減少呼叫 ...