以往在编写 C++ 程序时,如果需要分模块,一般我们是编写一个 .h 文件,在里面放上函数的声明,再编写一个 .cpp 文件,在里面添加函数的相关实现,这样子在使用的时候包含头文件,再把 .cpp 加到当前工程下编译即可,如果此时 .cpp 忘记添加到当前工程下编译,经常就会出现函数找不到的情况。如果你的 .h 是模板类的声明,.cpp 是模板类函数的实现,由于模板两次编译的机制,直接包含头文件就出现找不到函数的情况了,这种情况需要把实现和声明放在一起,才能找到函数的定义。
hpp(Header Plus Plus)头文件,顾名思义就是 .h 文件加上 .cpp 文件,在 boost 开源库中频繁出现,其实就是 .cpp 实现代码混入 .h 文件当中,定义和实现都包含在同一个文件里。
使用hpp文件的好处
1.hpp 文件将定义和实现放在同一个文件,减少了文件的数量
2.无需再将 cpp 加入到项目中进行编译,将代码直接编译到调用者的 obj 文件,不再生成单独的 obj,大幅度减少编译次数,非常适合编写开源库
3.boost 库大量使用模板,采样 hpp 的形式可以保持与各个编译器更好的兼容性(C++ 模板不能把源文件和声明文件分开成两个文件)