.hpp與.h的區別
阿新 • • 發佈:2018-12-01
.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