c++中的header-only library

news/2024/7/7 14:43:39

不同于在java中,虽然在java中,有些第三方库只是做了桥接的功能,比如slf4j-log4j-api,但是在运行时他们仍然是需要的,所以最多只能说是松耦合做得很好。

但是在c++中,一般我们应用第三方库的时候,是头文件+库(lib/a或so/dll)配对的形式。除此之外,c++中,还有一种称之为header only library的三方库,比如RapidJson、Boost.Asio。

关于什么是header-only library的定义,笔者特地搜了下其定义:就C/C++编程语言而言,当编译器可以通过头文件得到一个库包含的所有宏、函数、类的完整定义时,我们称这个库是header-only的。简而言之(会不会全部inline了?),Header-only库不需要单独的编译、打包和安装。只需要告诉编译器头文件的位置、并在应用源代码中#include头文件即可。

就模板而言,因为编译器需要知道模板的完整定义才能实例化,所以必须在头文件中包含完整定义。

所以这个其实header-only的思想应该来说是跟java的分发更加的接近了。任何时候要么源码、要么拿到编译好的jar文件即可。而不需要编译时候需要header,链接时候需要dll/lib。

https://en.wikipedia.org/wiki/Header-only


http://www.niftyadmin.cn/n/1967381.html

相关文章

过滤器和拦截器,监听器

过滤器&#xff08;filter&#xff09;&#xff1a;请求&#xff0c;响应&#xff0c;需要拦截器放行。 实现一个接口&#xff0c;init(初始化)&#xff0c;destroy&#xff08;摧毁&#xff09;,需要在xml中配置过滤器。 配置过滤器&#xff0c;同配置servlet一样。 <filt…

经纬度距离搜索数据库操作以及hibernate操作、Java比较两点间的距离

数据库语句&#xff1a; select * from ls_region_user order by ACOS(SIN((39.975092 * 3.1415) / 180 ) *SIN((lat * 3.1415) / 180 ) COS((39.975092 * 3.1415) / 180 ) * COS((lat * 3.1415) / 180 ) *COS((116.385476 * 3.1415) / 180 - (lng * 3.1415) / 180 ) ) * 6378.…

ajax传输

ajax:异步传输jsxml 异步刷新&#xff1a;网页中只有某一块需要修改&#xff0c;不影响其他块。比如说弹幕&#xff0c;点赞等&#xff01; 实现&#xff1a; js: XMLHttpRequest 对象&#xff1b; 该对象的方法&#xff1a; open( 提交方式,服务器地址 ,true):与服务器建立连…

20170210解题报告

精英班考试题 2017.2.10 题目名 工资 藏妹子之处 银河之星 源文件 money.cpp/c/pas excel.pas/cpp galaxy.cpp/c/pas 输入文件 money.in excel.in galaxy.in 输出文件 money.out excel.out galaxy.out 时间限制 1000MS 1000MS 1000MS 内存限制 256MB 128…

MySQL 关于count与group by一起用的效果

本来想要效果是有多少个userId&#xff0c;结果却显示的是&#xff0c;去重后每组userId有多少个。 select count(id) from ls_wweb_log_call where userId is not null and companyUserId:companyUserId and createDate BETWEEN :nowDate AND :nextDate group by userId后来使…

Jackson将实体转为json形式,且未空或者null(不参加序列化)

Jackson将实体转为json形式&#xff0c;且未空或者null(不参加序列化), 常见用法&#xff1a; ObjectMapper mappernew ObjectMapper().setSerializationInclusion(JsonIclude.Inculde.NON_NULL) 常见还有&#xff1a;Include.ALAWAYS 默认&#xff1b;NON_DEFAULT 默认不序列化…

python的class里面的function怎么被调用

2019独角兽企业重金招聘Python工程师标准>>> 如果python class的类名和class的文件名相同&#xff0c;那么类中的function就默认是可见的。 例如&#xff1a; abc.py class abc { def function1&#xff08;&#xff09; def function2 () } function1和function2都…

MySQL启动不起来和关闭不了的问题记录

昨天centos系统上的MySQL&#xff0c;不能启动&#xff08;一直在启动中&#xff0c;不停的.....&#xff0c;也不报错&#xff0c;就一直启动中&#xff09;&#xff0c;也不能关闭&#xff08;和启动效果一样&#xff09;。 甚至&#xff1a; ps aux | grep mysql kill -9 1…