1. 程式人生 > >.hpp與.h的區別

.hpp與.h的區別

.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時,將在連結時導致符號重定義錯誤。要避免這種情況,需要去除全域性物件,將全域性函式封裝為類的靜態方法。

 

https://blog.csdn.net/ycl295644/article/details/51870880較詳細



原文:https://blog.csdn.net/f_zyj/article/details/51735416