- 博客(44)
- 收藏
- 关注
原创 windows平台配置vsCode_CMake_Clang/LLVM_ninja环境与测试
vsCode clangd插件,提示安装lsp。安装包安装,设置系统环境变量。hello world程序。解压,设置系统环境变量。
2023-12-20 22:41:43
742
原创 spdlog输出日志等级控制由set_level运行时和#define SPDLOG_ACTIVE_LEVEL编译时共同控制
控制log活跃级别 #define SPDLOG_ACTIVE_LEVEL
2023-08-24 14:40:33
563
原创 可重入性与线程安全
可重入函数主要用于多任务环境中,一个可重入的函数简单来说就是可以被中断的函数,也就是说,可以在这个函数执行的任何时刻中断它,转入OS调度下去执行另外一段代码,而返回控制时不会出现什么错误;而不可重入的函数由于使用了一些系统资源,比如全局变量区,中断向量表等,所以它如果被中断的话,可能会出现问题,这类函数是不能运行在多任务环境下的。也就是说:本质上,可重入性与C++类或者没有全局静态变量的函数相似,由于只能访问自身所有的数据变量区域,所以即使有两个以上线程访问,也可以保证安全性。
2023-08-14 10:06:48
100
原创 forward完美转发
std::forward的作用是根据模板参数T的类型,将输入参数t转换为相应的引用类型。如果T是一个左值引用类型,那么t会被转换为一个左值引用;如果T是一个非引用类型或右值引用类型,那么t会被转换为一个右值引用。std::forward是一个标准模板函数,它用于实现完美转发,即将输入的参数原封不动地传递给另一个函数,保持其左值或右值的属性。,以实现泛型编程中的完美转发。
2023-03-02 22:16:26
485
原创 移动操作【右值引用,std::move(),移动拷贝(赋值)函数】
为了支持移动操作(高效),右值引用,std::move(),移动拷贝(赋值)函数。其中移动拷贝(赋值)函数以右值引用为参数,做函数匹配时【左值拷贝,右值移动】。std::move()作为左值到右值引用地转换函数【桥梁】,以达到“左值移动,避免拷贝”,代价是左值变量被窃取【保证赋值与销毁】
2023-03-02 22:12:16
528
1
原创 c++向前声明解决循环引用问题,简化依赖关系
两个类A和B相互关联,相互引用,如果采用彼此包含对方头文件的方式会出现循环引用,所以采用了类的前置声明的方式可以声明一个类而不定义它,这个声明被称为前向声明(forward declaration)。在声明之后,定义之前,类是一个不完全类型(incompete type),即已知向前声明过的类是一个类型,但不知道包含哪些成员。不完全类型只能以有限方式使用,不能定义该类型的对象,不完全类型只能用于定义指向该类型的指针及引用,或者用于声明(而不是定义)使用该类型作为形参类型或返回类型的函数
2022-11-16 18:33:06
1270
原创 回调函数|std::function|std::bind
如果你把函数的指针(地址)作为参数传递给另一个函数(类),当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。std::function的实例可以对任何可以调用的目标实体进行存储、复制、和调用操作,这些目标实体包括普通函数、Lambda表达式、函数指针、以及其它函数对象等。std::bind()函数的意义就像它的函数名一样,是用来绑定函数调用的某些参数的。
2022-11-16 18:30:42
503
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人