c++ header-only library
所属分类 c
浏览量 1102
第三方库 一般是头文件+库
编译时需要header,链接时需要dll/lib
header-only library
编译器可以通过头文件得到一个库包含的所有宏、函数、类的完整定义时
称这个库是header-only的
Header-only库不需要单独的编译、打包和安装
只需要告诉编译器头文件的位置、并在应用源代码中#include头文件即可
适合用来编写开源库
Boost库 使用hpp做为Header Only Library的文件后缀
header-only library 优缺点
优点
1.轻量级编译流程,集成编译非常简单,只需要指明所在路径,在C++实现文件中包含所需头文件即可.
2.编译器优化可以做得更好.因为内联函数和所有的实现都在编译时可见,所以可以进行相当多的优化,包括一些全局优化.
3.更好的代码设计.因为不能使用写全局变量和静态变量,以及所有的代码都公开可见,使得很多不良设计都无处藏身.
4.减少了ABI接口变更的风险.部分编译选项会导致静态库/动态库的ABI变化或者行为变化,
库的作者需要提供多个版本的库文件, 包括但不限于32/64bit, 静态/动态库, struct layout等不同组合.
Header Only规避了这个问题.
缺点
1.变更会导致全部组件重新编译.这就要求Header Only Library尽量应为相对稳定的功能库,而不是做为接口库.
2.代码组织不合理时,编译时间会显著变长.大量使用Header Only Library需要合量划分编译单元,减少编译单元的数量
c++ rapidjson 使用
上一篇
下一篇
c++ 变量名 冲突
c++ rapidjson 使用
大端和小端模式
c++ 标准输入输出
using namespace std 与 using std::cout
c c++ 网络库