- 博客(92)
- 收藏
- 关注
原创 【C/C++】构造函数被私有化,为什么还可以在类外直接new一个对象?
既然默认构造函数是私有,为什么还可以在类外直接new一个对象?因为私有是相对作用域外,同一作用域没有这些概念,都是透明的。上面代码添加了类名作用域`(TaskQueue::)`,表示这一句代码仍在类内,只不过是语法要求写在外面(在C++中,类的静态成员(static member)必须在类内声明,在类外初始化)。静态成员在外部初始化是语法要求,但初始化实质算在作用域内操作。
2024-07-07 10:24:22 312
原创 【C++新特性】移动语义 move()
在C++11中,标准库在中提供了一个有用的函数std::move,std::move并不能移动任何东西,它唯一的功能是将一个左值引用强制转化为右值引用,继而可以通过右值引用使用该值,以用于移动语义。 相对的有移动语义就有复制语义,复制语义就是B指针要想获得同样的内容就会发生拷贝,大部分都是深拷贝(浅拷贝,深拷贝有机会我会补上一篇博客的),结果就是指针A指向一片内存,指针B指向了另一片内存,但两片内存中存储的内容是相同的,大大的浪费性能。一句话概括std::move ———— std::move是。
2024-06-12 11:38:19 406
原创 【C++新特性】bind 函数和function 类模板
std :: function 的实例可以存储,复制和调用任何可调用的目标 :包括函数,lambda 表达式,绑定表达式或其他函数对象,以及指向成员函数和指向数据成员的指针。当 std::function 对象未包裹任何实际的可调用元素,调用该 std::function 对象将抛出 std::bad_function_call 异常。std::bind 将可调用对象与其参数一起进行绑定,绑定后的结果可以使用 std::function 保存。
2024-06-11 11:24:05 584
原创 【Linux驱动层】iTOP-RK3568学习之路(七):IOCTAL
记住API,不要管API内部实现。以前我一直疑惑怎么关于cmd,怎么网上说的不一样,应该是随着Linux内核版本更新,实现不一样了,但接口还一样。
2024-04-27 10:12:27 340
原创 【Linux驱动层】iTOP-RK3568学习之路(六):定时器
* 定时器超时时间,单位是节拍数 *//* 定时处理函数 */u32 flags;.......//定义一个定时器向 Linux 内核注册定时器,使用 add_timer 函数 向内核注册定时器以后,定时器就会开始运行删除一个定时器修改定时值,如果定时器还没有激活的话,mod_timer 函数会激活定时器timer_test.expires = jiffies_64 +msecs_to_jiffies(3000) // 定时时间 = 当前时间 + 延时时间(3秒)
2024-04-27 10:10:51 210
原创 【Linux驱动层】iTOP-RK3568学习之路(四):杂项设备驱动框架
杂项设备的主设备号固定为 10,当系统中注册了多个 misc 设备驱动时,只需使用子设备号进行区分即可。
2024-04-21 19:19:01 323
原创 【Linux驱动层】iTOP-RK3568学习之路(三):字符设备驱动框架
【代码】【Linux驱动层】iTOP-RK3568学习之路(三):字符设备驱动框架。
2024-04-21 18:17:13 365
原创 【Linux驱动层】iTOP-RK3568学习之路(二):vscode中设置头文件路径-完成代码自动补全
注意:本人使用讯为配置好的Ubuntu18.04环境,结果出现了BUG,,最终本人卸载vscode,重载解决了这个问题。输出【Ctrl+Shift+P】,打开命令面板。找到C/C++:编辑配置(JSON),点击。
2024-04-18 21:37:51 536 1
原创 【Linux驱动层】iTOP-RK3568学习之路(一):在RK3568上编译内核模块
在顶层Makefile中有ARCH和CROSS_COMPILE变量。如果我们在顶层Makefile中固定了这俩个变量的值,就不用在编译ko文件的时候再次设置。在Linux源码的顶层目录下,有一个Makefile文件,这个Makefile文件控制着Linux的编译流程。也叫做顶层Makefile文件。
2024-04-18 10:11:12 347
原创 【Linux驱动层】linux内核模块编译makefile
各级子目录中的makefile文件的作用就是先切换到顶层makefile,然后通过obj-m在可加载模块编译列表中添加当前模块,kbuild-makefile就会将其编译成可加载模块
2024-03-03 21:50:36 1626
原创 把图表题注编号由“0.1”改为“1.1“ (方法二)
把图表题注编号由“0.1”改为“1.1“ ,这里只给出隐藏标题的方式,因为比较好用,并且不影响内容。
2024-01-10 11:50:38 5112
原创 【Linux驱动层】驱动程序同步和异步通知方式
所谓同步,就是“你慢我等你”。所谓异步通知,就是 APP 可以忙自己的事,当驱动程序用数据时它会主动给APP 发信号,这会导致 APP 执行信号处理函数。
2023-11-25 17:46:19 1339
原创 【Linux驱动层】EVIOCGBIT
如果我们需要获取 /dev/input 目录下的 eventX 设备支持哪些事件(EV_KEY、EV_REL和EV_ABS等),可以通过ioctl调用指定`EVIOCGBIT(0, size)`选项来获取
2023-11-25 10:51:57 661
原创 【Linux】Makefile
当文件比较少时,这没有没有什么问题,当文件非常多的时候,就会带来非常多的效率问题如果文件非常多的时候,我们,只是修改了一个文件,所用的文件就会重新处理一次,编译的时候就会等待很长时间。如果修改a.c ,我们再次执行make,它的本意是想生成第一个目标test应用程序,它需要先生成a.o,发现a.o依赖a.c(执行我们修改了a.c)发现a.c比a.o更加新,现在a.o b.o都有了,其中的a.o比test更加新,就会执行。a.c命令来生成a.o文件。b.o依赖b.c,发现b.c并没有修改,就。
2023-11-19 11:50:55 170
原创 【Linux】vscode远程连接ubuntu,含vscode配置方案
!!!一定要点击`Linux`,不然就是连不上。有可能还要点击`continue`,我第一次试的时候要点这个,这次没试出来。这个不影响。
2023-11-16 12:10:58 6195 2
原创 【Linux】 ls -l 和 grep
在使用 ls -l 命令时,第一列的字符表示文件或目录的类型和权限。语法:用于显示指定工作目录下之内容。
2023-11-14 21:28:53 808
原创 【Linux】update-alternatives
因为优先级的存在,可以为同一个name设置多个path,当删除一个path后,默认连接到slave上.
2023-11-14 21:03:45 204
原创 【Linux】Ubuntu16.04下安装python高版本--源码安装
在这里,我们通过使用apt来安装Python 3的包管理工具pip,以便在之后使用pip来安装Python包。在专业人士看来,选择apt 是值得的,因为它提供了软件包管理的所有必需功能,并且更快,更友好且易于使用。后面的 python 即服务名,添加的版本会加入到名叫“python”的这个版本系列里,如果之前不存在(“无候选项”)则创建;如果显示“无候选项”,或者不完善,说明在“python”的这个版本系列里,你还没有设置优先级。/usr/bin/python 是要创建的软链接的名字,是几个版本共用的;
2023-11-14 21:01:13 815
原创 【Linux】Ubuntu16.04系统查看已安装的python版本,及其配置
前情提示:我已经在Ubuntu16.04里用源码安装了python3.8.11,Ubuntu16.04系统默认安装2.7.12与3.5.2。
2023-11-14 20:21:15 990
原创 【Linux】Ubuntu16.04配置repo
在这里,我们通过使用apt来安装Python 3的包管理工具pip,以便在之后使用pip来安装Python包。Ubuntu16系统自带python2.7和python3.5,而repo init时指定的repo仓库里的脚本需要python3.6版本解释器,那在repo init运行的时候肯定会出问题。–config 后跟所谓的服务名,此处即 python,也就是你配置的这一套版本管理的指代名称。在专业人士看来,选择apt 是值得的,因为它提供了软件包管理的所有必需功能,并且更快,更友好且易于使用。
2023-11-14 18:33:03 1356
原创 使用git将本地项目推送到远程仓库github
参考链接:https://www.jianshu.com/p/b1f9f684fac8。4)、在Github上设置好SSH密钥后,新建一个远程仓库,通过。把本地仓库的项目推送到远程仓库(也就是Github)上。1)、在本地创建一个版本库(即文件夹),通过。总结:本地项目通过git上传到github。2)、把项目复制到这个文件夹里面,再通过。将本地仓库和远程仓库进行关联;把它变成Git仓库;
2023-11-10 20:11:29 1325
原创 【QT】qt打包程序后无法正常启动
本人在自己电脑上打包Qt程序后可以正常运行,但换了个电脑就无法运行了,显示应用程序无法正常启动(0xc000007b)。应该采用Qt自带的cmd,打开命令行后先定位到打包项目所在的文件夹,然后用。造成这种情况的原因是因为系统变量的原因,我用的win10自带的cmd。命令将所需要的dll依赖文件加到该文件夹中。
2023-11-10 19:33:49 970
原创 【QT】Qt读取ANSI格式文件
关于Qt字符串格式转换以及QTextCodec的使用方式,网上有很多资料。其中大多数看起来很复杂,甚至根本无法完成转换工作,或者是基于较低的Qt版本编写。因此,有必要对使用QTextCodec完成字符串格式转换进行简要说明,本文中代码基于Qt5.1编写。Qt使用Unicode来表示字符串。但是通常需要访问一些非Unicode格式的字符串,例如打开一个GBK编码的中文文本文件,甚至一些非Unicode编码的日文,俄文等。其实,在Qt帮助手册中就有示例代码,但是是基于俄文的,这里简单修改为中文编码之间的转换。
2023-11-08 11:35:48 481
原创 【QT】 Qt自定义ui控件
在使用Qt的ui设计时,Qt为我们提供了标准的窗口控件,但是在很多复杂工程中,标准窗口控件并不能满足所有的需求,这时就需要我们自定义控件。我们自定义的类既可以作为独立的窗口显示,又可以作为一个控件显示。
2023-11-06 21:24:04 1383
原创 【QT】QT自定义C++类
建立项目后,添加类MyBtn,Base class中可以直接输入QPushButton作为继承类新建自定义方法 void SetMyText(QString str),MyBtn.h// 自定义添加类,写代码前,要先编译一下,确保没有错误,再继续写。Q_OBJECTpublic:MyBtn.cpp新建类完成。
2023-11-06 17:28:50 1336
原创 【C/C++】虚析构和纯虚析构
声明一个`pure virtual` 函数的目的是为了让 `derived classes` 只继承函数接口,派生类必须提供实现
2023-11-03 18:16:50 195
原创 【C/C++】 常对象与常函数
const修饰的是 “this”, 指针的值不可以改,即指针的指向不可以改,但指针指向的对象的值可以改。函数后面添加 const 关键字,const Person * const this ,是指向常量的常量指针。指针的指向不可以改,指针指向的值也不可以改。常对象 不可以调用普通成员函数,因为普通成员函数可以修改属性。加mutable关键字,即使在常函数中,也可以修改这个值。加mutable关键字,即使在常对象中,也可以修改这个值。
2023-11-01 16:44:42 262
原创 【C/C++】 常量指针、指针常量、指向常量的常指针
const修饰的是 “p2”–> , p2的值不可以改,即指针变量p2的指向不可以改,p2 = &b非法。 当主函数调用 printStudent()函数时,进行虚实结合,把变量s1的地址传送给形参stu(它们都是struct student * 型指针变量),因此,*或虚拟参数,表示它们并不是实际存在的数据,只有在发生函数调用时,函数中的形参才被分配内存单元,以便接受从形参传来的数据。 在定义函数时指定的形参,在未出现函数调用时,它们并不占内存中的存储单元,因此称它们是。
2023-11-01 11:49:41 237
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人