![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
文章平均质量分 91
Aero Auto
learning...
展开
-
《C 陷阱与缺陷 》阅读概要
《C 陷阱与缺陷 》阅读概要原创 2022-08-03 20:12:36 · 193 阅读 · 0 评论 -
全志T7/T507 Qt5.12.5移植记录
1.error “Qt requires C++11 support”1.1.Qt编译报错:…/…/…/include/QtCore/…/…/src/corelib/global/qglobal.h:1172:1:warning: identifier ‘nullptr’ is a keyword in C++11 [-Wc++0x-compat]Q_CORE_EXPORT int qEnvironmentVariableIntValue(const char *varName,bool *ok=原创 2021-06-18 11:37:07 · 4495 阅读 · 1 评论 -
短歌行——python大法好,退C保平安!
对酒当歌,人生几何?快用派神,快乐很多!指针内存,忧心伤身。何以解忧,唯有派神。青青子衿,悠悠我心。但为派神,沉吟至今。呦呦鹿鸣,食野之苹。我为派神,鼓瑟吹笙~明明如月,何时休歇?忧从中来,不可断绝。变量指针,泄露内存。契阔谈䜩,心念派神。月明星稀,还是宕机。熬到凌晨,何处可依?山不厌高,海不厌深。派神大法,天下归心!...原创 2020-12-24 09:06:34 · 229 阅读 · 0 评论 -
std::system_error
在退出的时候,C++抛出异常:terminate called after throwing an instance of 'std::system_error' what(): Invalid argument后来查到是因为std::thread被join了两次,一次是手动调用stop,一次是析构时调用:析构时调用,我主要是考虑到有的用户在使用时没有主动停止线程,就直接退出了。int AudioRecImpl::stop(){ int ret = 0; if (mAudi原创 2020-09-10 10:03:33 · 8104 阅读 · 0 评论 -
将std::thread作为类成员调用
最近想试一下std::thread 来替换pthread,发现网络上都是用全局的变量来开启线程。但是我一般倾向于在封装好的类中,直接开启新线程,对外仅仅保留调用接口。所以自己调试了一个模板,供大家参考!#include <iostream>#include <thread>using namespace std;class ThreadFunc{public: void start() { mydo = true;原创 2020-08-21 10:02:41 · 2953 阅读 · 2 评论 -
让你不再害怕 0, ‘0‘,‘\0‘,“\0“,“0“,“”,NULL,nullptr
0这个最简单吧,立即数,值为零。 char a = 0; printf("a=%d,a=%s\n",a,a);输出:a=0,a=(null)‘\0’单引号表示一个字符,\为转义符号,表示字符的ascii码值为0。如果要输出一个真正的字符零,需要写入字符零的ascii码 char a = '\0'; printf("a=%d,a=%s\n",a,a);输出:a=0,a=(null)0, ‘/0’,"/0",“0”,NULL,nullptr0, ‘/0’,"/0",“0”原创 2020-08-12 21:34:09 · 958 阅读 · 0 评论 -
C标准库函数集总结
常用网站在线编译:https://www.tutorialspoint.com/compile_c_online.php头文件参考:http://www.cplusplus.com/reference/clibrary/标准库说明:assert.h 错误检查void assert(int expression)这实际上是一个宏,不是一个函数,可用于在 C 程序中添加诊断。ctype.h 字符检查提供了一些字符测试和映射函数。int isalnum(int c)该函数检查所传的原创 2020-07-28 20:40:11 · 349 阅读 · 0 评论 -
设计模式(十四)尾声——几本设计模式书籍的比较
——门面模式、中介者模式、代理模式对比原创 2020-07-28 19:23:30 · 301 阅读 · 0 评论 -
设计模式(十三)桥梁模式、工厂模式、策略模式比较
桥梁模式和工厂模式有些类似的地方,基于一个抽象类,来创建不同的实例化子类。1.桥梁模式这里,在合适的情况下,抽象行为可以省略,于是就成了一个基本的接口——实现模型。策略模式从下图的调用结构看,策略模式和桥梁模式非常类似,结构都差不多。工厂模式:如果用工厂模式来实现,就是下面的结构:所以相比之下只是多了一层工厂的抽象而已。3.策略模式...原创 2020-07-17 20:32:44 · 231 阅读 · 0 评论 -
“shadows a parameter“ 和 “error: expected ‘}’ at end of input”
shadows a parameter一般检查函数、变量、结构体等存在重命名,有两个不同的对象使用了同一个名字,造成错误。error: expected ‘}’ at end of input一般是语句块不对称。比如{}不成对、()不成对,类声明后少分号等。...原创 2020-07-10 09:30:29 · 2007 阅读 · 0 评论 -
设计模式(十二)创建类模式比较
在看完基础的设计模式之后,回头想想,其实大部分模式仍然是半瓶水。对于一种简单的模式稍加变化,模式里面的各个部分应该如何继续抽象?1.策略模式中,环境角色似乎是不需要的。但在实际的运用中,它在处理多角色情况下,是必不可少的。这些都需要加深理解。2.状态模式和命令模式,在形式上比较类似,封装上都具有可循的踪迹。那么具体每一个部分,究竟在何时可以发挥出它的作用?这是需要深入理解的。3.当我们扩展的时候,可以基于原来的哪些部分来抽象,创造出合适系统需要的结果,进一步提升封装和扩展的优化?目前自己离这一步还很远原创 2020-05-26 21:11:54 · 187 阅读 · 0 评论 -
设计模式(十一)访问者模式 状态模式 解释器模式
好了,这个鬼玩意儿,前前后后持续了好多年才完成。终于迎来最后几个模式了。此刻,我的心情是复杂的。有万分之九千浪费光阴的悔恨,又有万分之一的满意。老实说,这种枯燥的东西,对我这样的普通人来讲,耐着性子看完也算不错了。前前后后几本书交替着看,勉强隐约地窥见了部分门道。又老实说,我还是很担心和焦虑的。这样一个很小的模组,居然花了我四个月的时间。而已只是完成了基础模式的部分。我这口老血吐的头发都白了。要不是加入007,真是不容易持续下来啊。为啥我写这么多废话呢,因为评论老实说看不懂。我就前面写点你能看懂的。看原创 2020-05-21 21:55:10 · 214 阅读 · 0 评论 -
设计模式(十)观察者模式 备忘录模式
观察者模式定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新。实际上,观察者模式只是典型的回调机制,可以广播。比较简单,就不多叙述了。备忘录模式意思是:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样,以后就可以将该对象恢复到原先保存的状态。■ 发起人(Originator)角色:该角色记录当...原创 2020-05-14 17:30:04 · 247 阅读 · 0 评论 -
设计模式(九)中介者模式
本来这一章是想一起写完中介者模式 观察者模式 备忘录模式的,但是觉得中介者在实际中比较有意义,所以单独一章吧。中介者模式用一个中介对象封装一系列对象(同事)的交互,中介者使各对象不需要显式地相互作用,从而使其耦合松散,而且可以独立地改变它们之间的交互。实例:中介者有两个接口:注册会员,为会员配对。具体终结者实现这两个接口。其中男女双方是各自独立的,不需要直接交互。解耦原理解析...原创 2020-04-29 18:11:05 · 138 阅读 · 0 评论 -
设计模式(八)模板方法模式 命令模式 责任链模式
模板方法模式定义一个操作中的算法的框架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。模板方法模式涉及两个角色。■ 抽象模板(Abstract Template)角色:该角色定义一个或多个抽象操作,以便让子类实现;这些抽象操作是基本操作,是一个顶级逻辑的组成步骤。还需要定义并实现一个或几个模板方法,这些模板方法一般是具体方法,即一个框架,实现对...原创 2020-04-24 13:55:25 · 239 阅读 · 0 评论 -
设计模式(七)组合模式 桥梁模式 外观模式
组合模式将对象组合成树形结构以表示“部分—整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性。组合模式提供以下3个角色:■ 抽象构件(Component)角色:该角色定义参加组合对象的共有方法和属性,规范一些默认的行为接口。■ 叶子构件(Leaf)角色:该角色是叶子对象,其下没有其他的分支,定义出参加组合的原始对象的行为。■ 树枝构件(Composite)角色:该角色代表...原创 2020-04-21 22:00:40 · 189 阅读 · 0 评论 -
Qt fatal error: GLES3/gl3.h: No such file or directory
Qt交叉编译应用后报错:…/…/…/include/QtGui/…/…/src/gui/opengl/qopengl.h:109:26: fatal error: GLES3/gl3.h: No such file or directory编译单个应用,我们可以直接填写对应路径来解决,但是这个其实是交叉编译系统配置问题,每一个应用都改会比较麻烦。最佳方式是交叉编译时,就通过统一的配置解决。...原创 2020-04-11 16:14:29 · 3327 阅读 · 0 评论 -
error "Qt requires C++11 support"
Qt编译报错:…/…/…/include/QtCore/…/…/src/corelib/global/qglobal.h:1172:1:warning: identifier ‘nullptr’ is a keyword in C++11 [-Wc++0x-compat]Q_CORE_EXPORT int qEnvironmentVariableIntValue(const char *...原创 2020-04-11 15:59:51 · 6577 阅读 · 0 评论 -
设计模式(六)装饰模式
定义:动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式比生成子类更为灵活。装饰模式有以下4个角色。■ 抽象构件(Component)角色:该角色用于规范需要装饰的对象(原始对象)。■ 具体构件(Concrete Component)角色:该角色实现抽象构件接口,定义一个需要装饰的原始类。■ 装饰(Decorator)角色:该角色持有一个构件对象的实例,并定义一个与抽象...原创 2020-04-06 11:35:58 · 172 阅读 · 0 评论 -
设计模式(五)代理模式
代理模式,也叫委托模式。用代理商隔开用户与目标。用户不直接访问目标,而是访问代理,再委托代理完成相关操作。代理者可以再操作前后进行额外的处理,比如访问计数,批量创建,信息汇总等。为其他对象提供一种代理以控制对这个对象的访问。按照使用目的可以将代理划分为以下几种。■ 远程(Remote)代理:为一个位于不同的地址空间的对象提供一个局部代表对象。这个不同的地址空间可以是在本机器中,也可...原创 2020-03-23 14:38:37 · 165 阅读 · 0 评论 -
设计模式(四)建造者模式
奇怪,我怎么感觉我写过这个东西。。。。好吧,我翻了一下,没有写。这个东西,和工厂模式差不多。差别在于:工厂模式是生产不同的对象。构建者相当于,选择不同型号的配件来组装成品。我突然记起来了,我真的没有写过这个东西。是以前看书的时候做过笔记而已。。。一,设置部件典型的场景,比如qq秀装备。设置衣服,帽帽,裤裤,等。设置好了,就生成一个qq秀套装。还比如,配置电脑,选择不同的cpu,内存条...原创 2020-03-20 20:00:24 · 98 阅读 · 0 评论 -
设计模式(二)设计原则
设计模式以以下原则为指导:开闭原则单一职责原则里氏替换原则依赖倒置原则接口隔离原则迪米特法则开闭原则一个软件实体应当对扩展开放,对修改关闭。这个很难理解,听到就一头雾水。啥是扩展?啥是修改?啥是开放?啥是关闭?根本不是人话。。。看了很久才理解一点点:我们在架构的时候,要考虑到后续的扩展,但是尽量不要去修改原来的接口。说的轻松,但是怎么实现呢?那就是后面的原则。单一职...原创 2020-03-13 22:04:06 · 124 阅读 · 0 评论 -
note: forward declaration of 'class QButtonGroup'
升级QT5.12.5之后,以前的一个应用编译失败,提示:error: invalid use of incomplete type ‘class QButtonGroup’Qt_5_12_5/include/QtWidgets/qabstractbutton.h:53:7: note: forward declaration of ‘class QButtonGroup’原因是没有变量声...原创 2020-03-09 16:39:41 · 1773 阅读 · 0 评论 -
设计模式(一)设计模式的分类
备注:因为这些模式我还没有看完,所以后一半模式只有引用,没有简单阐述。后续再补充完常用的设计模式可以概括为23种,按照特点可以将其分为三大类型:■ 创建型■ 结构型■ 行为型建构型■ 单例模式(Singleton Pattern):一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。单例模式可以应用于系统类常驻资源的访问,这一类资源可以提前创建,免去使用时创建的耗时。...原创 2020-03-06 20:05:01 · 270 阅读 · 0 评论 -
设计模式之 模板模式、策略模式、工厂模式
看完三种模式觉得有点相似,总结一下差异以巩固知识。模板模式使用模板进行通用的操作,将可变的接口使用钩子(可子类覆盖的非纯虚函数)将可变接口由子类执行编写。子类先调用基类的方法,然后会调用自己的个性化方法。策略模式策略模式比较简单,策略使用组合而不是继承。意思是策略是目标类的一个成员变量,而不是基类的固定方法。将可变的不同策略编写为接口成员(使用接口Java或者抽象类C++),子类根据接...原创 2020-02-17 20:46:43 · 466 阅读 · 0 评论 -
C++和std lib参考手册
http://www.cplusplus.com/reference/原创 2019-11-22 11:28:28 · 842 阅读 · 0 评论 -
百度CarLife开发备忘
1.建立aoa通道可以通过libusb直接打开手机端的aoa模式,发送百度CarLife描述信息。此后会重新枚举aoa设备,手机端会提示是否需要下载carlife。也可以通过内核来建立一个aoa驱动节点,通过节点来读写数据。节点侦测程序参考linux设备节点侦测注意接口的独立性封装,这样在其它方案如Android Auto、Android 手机镜像时复用。2.建立socket通过aoa...原创 2019-08-24 17:37:19 · 2179 阅读 · 0 评论 -
域操作符前无域名 ::前无作用域代表什么?
看到一段代码:int Trsfer::write(void* buf, size_t len) { int ret = ::write(mWriteEp, buf, len);::write? 为啥要加::呢? 这里是调用标准的写函数, 不加全局域符号也可以啊?后来发现这里是成员函数名和标准函数完全一样了, 所以必须加以区分. 否则默认调用成员函数.以上测试函数中如果加入全局...原创 2019-07-23 10:34:02 · 1008 阅读 · 0 评论