- 博客(4)
- 收藏
- 关注
原创 如何在项目中使用开源库——从源码编译出动态库(以mosquitto为例)
将 mosquitto 的 include 文件夹中的四个文件,以及自己生成的 libmosquitto.so.1 加入自己的项目中。所以,在运行可执行文件前,需要在可执行文件的同级目录下新建 lib 文件夹,将动态库 libmosquitto.so.1 放进去。文档,发现编译步骤如下(本文所用环境为 linux 环境,所以只需要 make)。此时,可能会因为缺少某些东西,导致编译失败,按照提示进行安装即可。项目中想要使用某个开源库,需要先自行将其从源码编译出来。想在自己的项目中使用 mosquitto?
2024-03-07 12:03:55 753
原创 构造语义学——初始化列表
这表示,在 user code 前,编译器调用了 Member 类的默认构造函数初始化了成员类对象 _memObj,也用随机值初始化了 int 型变量 _num。显然,在构造函数中使用赋值语句再赋值,是一种浪费,浪费了初始化列表进行的初始化。所以,使用初始化列表进行初始化的效率,要高于在构造函数中使用赋值语句。实际上,构造函数体内的语句只能算是对成员变量进行赋值,初始化列表才是真的对成员变量进行初始化。tip: 初始化列表中的初始化顺序,仍按照类中的声明顺序,并不按照初始化列表中的顺序。
2024-03-05 20:26:58 299
原创 构造语义学——程序转化语义学
编译器会在拷贝构造函数中,用额外参数 _result 来替换有名字的返回变量(Named Return Value),本例中即为 temp。因此,这三种情况,会迫使编译器对用户代码进行部分转化,在适当的位置插入对拷贝构造函数的调用。显然,编译器也考虑到了这点。所以有时候,编译器会默默地自己进行 NRV 优化。拷贝构造函数,就是用一个已存在的对象去初始化另一个对象。那么,以下三种情况,显然需要用到拷贝构造函数。如果能去掉这些拷贝构造函数,那该有多好。
2024-03-05 19:47:37 530
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人