![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++学习之路
文章平均质量分 58
从事java开发3年的情况下,自学C++,该专栏用于记录自学笔记,便于后期复盘。也希望能给C++的学习爱好者提供帮助。
Turn X7
不息!
展开
-
cmake文件 打印PROJECT_SOURCE_DIR变量为空串问题
cmake文件 打印PROJECT_SOURCE_DIR变量为空串问题转载 2023-10-30 16:23:24 · 1059 阅读 · 0 评论 -
C++——子类调用父类方法
C++——子类调用父类方法转载 2023-06-28 12:13:13 · 2292 阅读 · 0 评论 -
C++读取Properties的工具类
C++读取Properties的工具类转载 2023-05-17 09:50:56 · 319 阅读 · 0 评论 -
c++ unordered_map4种遍历方式
c++ unordered_map4种遍历方式转载 2023-05-17 09:38:58 · 4453 阅读 · 0 评论 -
C++函数调用解耦
C++函数调用解耦转载 2023-05-17 09:29:23 · 386 阅读 · 0 评论 -
std::string的一些常用操作封装
std::string的一些常用操作封装转载 2023-05-17 09:13:08 · 187 阅读 · 0 评论 -
linux下使用backtrace记录程序崩溃时的堆栈信息,并进行分析
linux下使用backtrace记录程序崩溃时的堆栈信息,并进行分析转载 2023-05-05 15:40:11 · 1370 阅读 · 0 评论 -
C++第三方日志库log4cplus基本语法介绍
C++第三方日志库log4cplus基本语法介绍转载 2023-04-12 11:26:01 · 2264 阅读 · 0 评论 -
linux环境下log4cplus编译安装及简单使用
linux环境下log4cplus编译安装及简单使用原创 2023-04-07 11:21:55 · 1051 阅读 · 0 评论 -
log4cplus编译出错解决方法
undefined macro: AC_CHECK_INCLUDES_DEFAULT./configure --enable-m4_pattern_allow转载 2023-04-07 10:46:48 · 878 阅读 · 0 评论 -
链接第三方库(动态或者静态库)到自己的生成库中
链接第三方库(动态或者静态库)到自己的生成库中转载 2023-03-27 11:58:30 · 1034 阅读 · 0 评论 -
cmake之install总结(指定安装文件和安装位置)
cmake之install总结(指定安装文件和安装位置)转载 2023-03-27 11:04:54 · 6099 阅读 · 1 评论 -
cmake生成动态链接库
cmake生成动态链接库转载 2023-03-27 11:03:01 · 3424 阅读 · 0 评论 -
如何在C++中获得完整的类型名称
char* name = abi::__cxa_demangle(typeid(Foo*[10]).name(), nullptr, nullptr, nullptr);std::cout转载 2023-03-16 17:04:44 · 2938 阅读 · 0 评论 -
C++函数参数传递的两种方式:值传递和引用传递(包括整型变量和字符串变量)
值传递和引用传递转载 2023-02-23 09:17:07 · 3234 阅读 · 0 评论 -
C++ if和if constexpr
C++ if和if constexpr转载 2023-02-12 20:39:27 · 1570 阅读 · 0 评论 -
C++11使用using定义别名(替代typedef)
C++11使用using定义别名(替代typedef)转载 2023-02-10 09:47:12 · 711 阅读 · 0 评论 -
so动态库制作:
so动态库制作:1、g++ -fPIC -shared threadpool.cpp -o libtdpool.so -std=c++17配置编译测试类时需要的动态链接库2、将so库放到/usr/local/lib 将头文件放到/usr/local/include3、g++ test.cpp -std=c++17 -ltdpool -lpthread配置编译出来的可执行文件查找动态链接库的路径4、在/etc/ld.so.conf.d中新建mylib.conf5、vi mylib.con原创 2023-02-09 19:01:27 · 533 阅读 · 0 评论 -
clion:win10远程Linux服务器开发调试
clion:win10远程Linux服务器开发调试转载 2023-02-01 10:16:07 · 809 阅读 · 0 评论 -
使用CLion配置Qt5开发环境
将将QT的.pro文件转换为CMakeLists.txt文件原创 2023-02-01 10:02:04 · 1101 阅读 · 0 评论 -
CMakeLists教程(实战总结)
CMakeLists教程(实战总结)转载 2023-02-01 09:40:59 · 601 阅读 · 0 评论 -
C语言连接MySQL
C语言连接MySQL转载 2023-02-01 09:19:30 · 528 阅读 · 0 评论 -
clion+linux远程开发时Cmake编译出现undefined reference to ‘dlopen‘的解决办法
clion+linux远程开发时Cmake编译出现undefined reference to 'dlopen'的解决办法转载 2022-09-16 15:55:44 · 603 阅读 · 0 评论 -
gcc版本问题导致redis6.0编译报错
备注:开发过程中经常需要各种版本的编译环境,使用scl 可以暂时的改变当前用户的编译工具,列如 你的系统版本gcc 4.4.7 但是你可以使用scl工具它可以临时的把你的gcc版本提升到4.8。RedHat推出的 scl (Software Collections) ,它可以根据devtoolset一起配合来快速统一开发环境,不用一个个的去找各个官网再去编译源码安装。#注意:scl命令启用只是临时的,推出xshell或者重启就会恢复到原来的gcc版本。gcc得版本问题,新版本redis6.0。转载 2022-09-16 15:33:45 · 950 阅读 · 0 评论 -
qt .pro文件和cmakelists.txt配置第三方库
LIBS的使用就是-L指定库的目录,而-l指定库的名字,在Linux下,则去掉lib和后缀名,windows下去掉后缀名即可),静态库、动态库都是一样的。INCLUDEPATH += /home/will/Projects/pluginTest/INCLUDEPATH 后添加头文件路径。include_directories(${INC_DIR}) # 用${}引用变量。只写库名就可以,就是libxxx.so的中间xxx的部分。转载 2022-09-16 15:11:29 · 1653 阅读 · 0 评论 -
c++ 单例模式
单例Singleton是设计模式的一种,其特点是只提供唯一一个类的实例,具有全局变量的特点,在任何位置都可以通过接口获取到那个唯一实例;设备管理器,系统中可能有多个设备,但是只有一个设备管理器,用于管理设备驱动;数据池,用来缓存数据的数据结构,需要在一处写,多处读取或者多处写,多处读取;...转载 2022-08-29 09:34:32 · 208 阅读 · 0 评论 -
char * 与char []区别总结
c++代码里头经常见到char * 与char []的写法,这两种写法都可以表示一个字符串。上面这段代码,最后输出的结果为a=c1, b=c2所以这两种方式都可以表示字符串,那么区别到底是什么?我们先说结论,后面再来分析:char * 这种方式表示常量指针,char[] 这种表示指针常量!...............转载 2022-08-14 21:47:49 · 1268 阅读 · 1 评论 -
vs中新建文件/筛选器/文件夹
创建筛选器后,工程目录下*.vcxproj.filters文件用来记录筛选器,此文件不能删除,否则筛选器将消失.选中项目中的一个文件夹–>右键–>添加–>现有项磁盘上已有文件添加进项目中,或者被排除的文件被添加进来;如果我们希望创建分类的时候,在工程目录下对应创建真实文件夹,则应该"新建文件夹";选中项目中的一个文件夹–>右键–>添加–>新建项创建一个新文件;新建选中一个项目或文件夹目–>右键–>添加–>新建筛选器;第二步新建文件夹项目–>添加–>新建文件夹。......转载 2022-07-21 15:09:30 · 6316 阅读 · 0 评论 -
Visual Studio 2019 创建CMake Linux项目
我记得使用VisualStudio创建的Windows项目可以在工程中一次性直接添加一个已有的包含文件夹及源文件的目录,而且自动保持目录结构,然而创建的Linux项目就不行,要想把已有的包含源代码的目录添加到项目中,需要在项目文件树中创建筛选器,也就是文件夹,再点击该筛选器->增加现有项,源文件添加到项目中来,这个对于文件目录结构简单的项目来说还好,然而一般稍微大一点的项目,源文件几百个,不可能放在一个文件夹下,这个既不好看,查找文件也不方便。linkid=834763。......转载 2022-07-21 14:57:04 · 1326 阅读 · 0 评论 -
使用VS2017调试Linux C++代码
所以,在编写代码的时候,如果包含Linux系统文件,IDE会提示没有找到头文件或者找不到符号等问题(实际编译是没有问题的,因为编译是在Linux环境下编译的,相应的头文件也能找到)。编译过程中如果需要用到的静态库,就要在项目属性中链接器->常规->附加库目录中添加对应的库路径(写Linux环境下的绝对路径),在链接器->输入->库依赖项里面写上需要的库名称,去掉名称里面的lib和扩展名.a。调试的时候也可以给代码下断点,实际的调试工作是Linux环境中gdb干的,VS中只是显示调试信息。..........转载 2022-07-21 13:38:41 · 1888 阅读 · 0 评论 -
【Qt5.12】Qt5.12安装教程
4.1VS2017中可以开发QT应用,相关配置请参考如下博客。Step1双击安装包,稍等片刻,然后点击next。选择Windows平台,Linux和Mac平台类似。Step2如果没有账号,则选择skip。Step3Qt设置欢迎界面,选择下一步。Step6同意许可协议,然后选择下一步。Step5选择组件,然后选择下一步。Step11完成安装,打开软件。Step2选择Qt控件项目。Step4选择安装路径。Step8点击安装即可。Step9选择下一步。.........转载 2022-07-21 11:20:42 · 5856 阅读 · 0 评论 -
QT中添加Q_OBJECT出现的问题
Multiple Inheritance Requires QObject to Be First(多重继承QObject一定要放在前面)我在用class My_Node : public QGraphicsItem,public QObject来生成自己的类时,想使用信号和槽机制,但这是dys_node.h中没有Q_OBJECT,不能使用信号槽。我将Q_OBJECT加上之后,出现几个不知道是什么的错误。然后我将工程目录下的Makefile删除,然后重新编译、链接文件,刚才的错误消失了,但出现如下三个错转载 2022-05-06 08:59:55 · 1965 阅读 · 0 评论 -
【Qt】报错error: undefined reference to `vtable for的解决方法
1、问题描述编译Qt程序时,在某个类构造函数定义处报错:error: undefined reference to `vtable for2、原因分析导致错误信息的原因是:子类没有实现父类的纯虚函数;在Qt中,首先要想到的是在一个类中添加了新的继承QObject,并添加了 Q_OBJECT 宏,然后执行构造或重新构造,都会造成这个错误。根本原因是,只执行构造或重新构造,都不会编译新添加的宏Q_OBJECT。因此在这之前要执行qmake,让moc编译器去预编译Q_OBJECT,然后再执行构造转载 2022-05-06 08:57:48 · 6687 阅读 · 2 评论 -
Qt学习之资源文件(qrc)的添加以及使用
前言 当Qt工程打包好发给他人使用时可能会出现一些图片不显示或者一张图片都加载不出来情况,那么可能就是他人的电脑没有这些图片资源,或者源程序加载图片的方法采用的是绝对路径的写法,与他人电脑上面图片的绝对路径不一致导致加载不出来。通过Qt添加资源文件的方法就可以解决这个问题,而且项目打包发给别人的时候不需要把图片也一起打包,可以节省很多空间。本文就是介绍Qt如何添加资源文件并使用。添加资源文件 右键工程文件夹——>点击添加新文件依次选择Qt.........转载 2022-05-06 08:54:56 · 7906 阅读 · 3 评论 -
自定义Qt构建步骤,添加数据文件(txt,json等)到构建目录
Qt的qrc资源文件是只读的,因此我们如果要用txt之类的文件存储数据,在程序运行过程中就不能对它们进行修改,也就是不能进行读操作。用“file.open(QIODevice::WriteOnly)”方式打开会失败。因此我们不能把将来要修改的数据文件添加到qrc资源文件中。但是编译的时候,我储存数据的data.json文件没有自动添加到构建出来的目录下。我尝试修改工程的pro文件,仍旧没有用。最后通过添加自定义的构建步骤,把数据文件拷贝到构建目录。具体步骤如下:1、首先要编写一个bat,可以就放在工程转载 2022-05-06 08:43:41 · 1257 阅读 · 0 评论 -
Qt读取配置文件的方法
Qt读取配置文件的方法,主要用到了QApplication::applicationDirPath()QSettings在建立的正式项目一般都会有配置文件,否则后期维护起来会很麻烦。无论它的扩展名是.ini、.cfg还是.properties等,只要文件中内容符合下面这个格式即可。databaseInfo.cfg文件是我在项目中建立的MySQL配置文件。存放在项目中/config/目录下[database]HostName=127.0.0.1Port=3306UserName=r转载 2022-05-06 08:37:30 · 3444 阅读 · 0 评论 -
用ldd查看C++程序的依赖库
有一阵子不琢磨C++了。今天想查看一下自己的Ubuntu下的一个GCC4.7.3编译的程序究竟依赖了哪些库。找了好久发现自己居然忘记了ldd命令。使用很简单,采用-v参数将详细信息显示出来。知识不用就会遗忘,脑袋不用就会生锈。$ ldd -v ./service linux-vdso.so.1 => (0x00007fff983fe000) libboost_system.so.1.53.0 => /usr/lib/libboost_system.so.1.53.0 (0x00转载 2022-04-28 11:10:19 · 845 阅读 · 0 评论 -
CentOS下安装man手册
1、命令:yuminstallman后发现,有的函数仍然没有。经过一番查找,原来安装的不完全,还要执行下面命令:yum install man-pages2、总结:cengos下安装man手册命令:yum install -y man man-pages3、Ok,每一个linux发行版总有那么一点不一样,而且体现在方方面面哦。...转载 2022-03-25 10:43:08 · 986 阅读 · 0 评论 -
gcc、make、makefile、cmake、cmakelists区别
1.gcc是GNU Compiler Collection(就是GNU编译器套件),也可以简单认为是编译器,它可以编译很多种编程语言(括C、C++、Objective-C、Fortran、Java等等)。2.当你的程序只有一个源文件时,直接就可以用gcc命令编译它。3.但是当你的程序包含很多个源文件时,用gcc命令逐个去编译时,你就很容易混乱而且工作量大4.所以出现了make工具make工具可以看成是一个智能的批处理工具,它本身并没有编译和链接的功能,而是用类似于批处理的方式—通过调用make转载 2022-03-22 13:49:59 · 231 阅读 · 0 评论 -
C语言回调函数详解
1. 什么是回调函数?回调函数,光听名字就比普通函数要高大上一些,那到底什么是回调函数呢?恕我读得书少,没有在那本书上看到关于回调函数的定义。我在百度上搜了一下,发现众说纷纭,有很大一部分都是使用类似这么一个场景来说明:A君去B君店里买东西,恰好缺货,A君留下号码给B君,有货时通知A君。感觉这个让人更容易想到的是异步操作,而不是回调。另外还有两句英文让我印象深刻:1) If you call me, I will call you back; 2) Don't call me, I will call转载 2022-02-25 14:10:36 · 223 阅读 · 0 评论