C++
文章平均质量分 83
C++
小熊coder
嵌入式AI,后端开发,机器学习
展开
-
C语言如何实现动态扩容的string?
众所周知,C++ 中的string使用比较方便。最近工作中使用C语言,但又苦于没有高效的字符串实现,字符串的拼接和裁剪都比较麻烦,而且每个字符串都需要申请内存,内存的申请和释放也很容易出bug,怎么高效的实现一个不需要处理内存问题并且可以动态扩容进行拼接和裁剪的string呢?原创 2023-04-02 00:15:00 · 314 阅读 · 0 评论 -
参数类型string和const char*哪个更合理?
再一个,string(basic_string)是个封装类,它占用的空间肯定比const char*更大,这块我后续详细介绍一下string的源码分析吧。看一些C++项目时,发现有些函数传递的参数类型是const char*,我在想,为什么一个C++项目要用char*指针?用string会不会更好?可以分析出来,当传递的是"xxxx"这种串时,string方式会自动创建出个临时对象,临时对象的构造和析构会降低性能。今天,我们就来简单分析一下,函数参数使用string还是const char*,哪个更合适?原创 2023-04-02 00:10:06 · 154 阅读 · 0 评论 -
Qt QString 、String、char* 三者之间相互转换
已剪辑自: https://www.cnblogs.com/ybqjymy/p/13690311.html。使用QString自带的静态构造函数 fromStdString(string &s)即可。char *转化为QString比较容易,可以直接使用 QString的构造函数。使用QString类自带的toStdStirng()函数即可。1.先把QString类型变为QByteArray类型。2.从QByteArray类型再转为char* 类型。直接使用string自带的函数 c_str()即可。原创 2023-04-02 00:09:44 · 208 阅读 · 0 评论 -
面向对象类之间主要的几种关系
已剪辑自: https://mp.weixin.qq.com/s/ClBuraVUIPhnWceI7m78Xg嵌入式开发虽然平时C语言用的比较多,但面向对象的思维应该是每一位嵌入式软件工程师必备的知识。之前给大家分享过用C语言实现面向对象的内容,也分享过的文章。今天就再给大家拓展一下面向对象类之间的几种关系。原创 2023-02-19 21:30:28 · 783 阅读 · 0 评论 -
如何让一个 C 语言项目调用另一个 C++ 项目中某些类所提供的接口?
C/C++不同的语言有不同的编译规则,要想实现通用,就必须告诉编译器,按照目标语言的规则进行编译!转载于:如何让一个 C 语言项目调用另一个 C++ 项目中某些类所提供的接口?- 嵌入式艺术的回答 - 知乎。原创 2022-12-23 10:16:25 · 1255 阅读 · 0 评论 -
C语言文件操作、C++文件操作、QT文件操作汇总及对比分析
前面对C语言文件操作、C++文件操作、QT文件操作进行了比较详细的说明,文章链接如下;C语言文件操作C++文件操作QT文件操作通过大致的了解,我们知道C语言文件操作、C++文件操作、QT文件操作之间其实是有很多相似的地方,实际在开发过程中,我们甚至可以混合使用这几种文件操作方式,那这几种文件操作之间的差异在哪里呢?第一个很明显的差异是易用性方面的差异,C++文件操作、QT文件操作因为使用了面向对象,具有更好的封装性,使用起来可能会更简介易懂。第二个可能的差异是性能方面的差异,具体可以参考下面两篇文章;开个话原创 2022-12-05 19:51:46 · 798 阅读 · 0 评论 -
C++文件操作
内存中存放的数据在计算机关机后就会消失。要长久保存数据,就要使用硬盘、光盘、U 盘等设备。为了便于数据的管理和检索,引入了“文件”的概念。一篇文章、一段视频、一个可执行程序,都可以被保存为一个文件,并赋予一个文件名。操作系统以文件为单位管理磁盘中的数据。成千上万个文件如果不加分类放在一起,用户使用起来显然非常不便,因此又引入了树形目录(目录也叫文件夹)的机制,可以把文件放在不同的文件夹中,文件夹中还可以嵌套文件夹,这就便于用户对文件进行管理和使用,正如 Windows 的资源管理器呈现的那样。一般来说,文件原创 2022-12-05 19:34:53 · 3552 阅读 · 0 评论 -
C语言文件操作
我们对文件的概念已经非常熟悉了,比如常见的 Word 文档、txt 文件、源文件等。文件是数据源的一种,最主要的作用是保存数据。在操作系统中,为了统一对各种硬件的操作,简化接口,不同的硬件设备也都被看成一个文件。对这些文件的操作,等同于对磁盘上普通文件的操作。例如:操作文件的正确流程为:打开文件 --> 读写文件 --> 关闭文件。文件在进行读写操作之前要先打开,使用完毕要关闭。所谓打开文件,就是获取文件的有关信息,例如文件名、文件状态、当前读写位置等,这些信息会被保存到一个 FILE 类型的结构体变量中。原创 2022-12-05 19:34:06 · 1351 阅读 · 0 评论 -
QT文件操作
已剪辑自: http://c.biancheng.net/view/9430.html很多应用程序都需要具备操作文件的能力,包括对文件内容进行读/写、创建和删除文件等,甚至某些应用程序的诞生纯粹是为了操作文件,比如 WPS Office、PDFedit 等。为此,Qt 框架提供了 QFile 类专门用来操作文件。QFile 类支持对文件进行读取、写入、删除、重命名、拷贝等操作,它既可以操作文件文件,也可以操作二进制文件。使用 QFile 类操作文件之前,程序中需引入头文件。创建 QFile 类的对象,常用的原创 2022-12-05 19:32:35 · 2174 阅读 · 0 评论 -
编写可移植C/C++程序的要点
然而,对于一些比较特殊的应用,如图形组件本身,就拿GTK+来说吧,基于X Window的功能和基于Win32的功能,两者差巨大,除了窗口、事件等基本概念外,几乎没有什么相同的,如果不事先了解各个平台的特性,在设计时就精心考虑的话,抽象出来的抽口在另外一个平台几乎无法实现。这些貌合神离的东东,端的是神出鬼没,一不小心着了它的道。**这一点是建立在分层设计之上的,大多数底层函数,像线程、同步机制和IPC机制等等,不同平台提供的函数,几乎是一一对应的,封装这些函数很简单,实现Adapter的工作几乎只是体力活。原创 2022-12-02 23:03:38 · 197 阅读 · 0 评论 -
【学习QT必备的C++基础】C++引用精讲,C++ &用法全面剖析
引用是 C++ 的新增内容,在实际开发中会经常使用;C++ 用的引用就如同C语言的指针一样重要,但它比指针更加方便和易用,有时候甚至是不可或缺的。同指针一样,引用能够减少数据的拷贝,提高数据的传递效率。本专题不仅仅从语法层面讲解 C++ 引用,而是深入 C++ 引用的本质,让大家不但知其然,而且知其所以然。原创 2022-11-24 12:00:18 · 320 阅读 · 0 评论 -
【学习QT必备的C++基础】C++类和对象
已剪辑自: http://c.biancheng.net/view/2213.html类和对象是C++的重要特性,它们使得 C++ 成为面向对象的编程语言,可以用来开发中大型项目,本节重点讲解类和对象的语法,如果你对它们的概念还不了解,请先阅读《C++类和对象到底是什么意思》。类是创建对象的模板,一个类可以创建多个对象,每个对象都是类类型的一个变量;创建对象的过程也叫类的实例化。每个对象都是类的一个具体实例(Instance),拥有类的成员变量和成员函数。原创 2022-11-24 11:10:15 · 1313 阅读 · 2 评论 -
现在快2022年了,c++为什么还要实现(.cpp)和声明(.h)分开?
你可以不理解链接过程,但是有一个相关知识点有必要搞清楚——声明与定义。// 外部变量声明int g = 0;// 全局变量定义,由于有初始化,定义较强int g2;// 全局变量定义,没有初始化// 函数声明{return 0;} // 这是函数定义static int s_func(int a) { ……} // 这叫静态函数定义(被限定于模块内,有点模块私有那意思)声明和定义最大的区别是:声明可以重复多次,而定义只能有一个。这对我们设计.h文件提出了限制——头文件里最好只有声明,没有定义。原创 2022-10-06 16:09:20 · 4560 阅读 · 0 评论 -
C++都有哪些就业方向?是否应该学习C++?
已剪辑自: https://mp.weixin.qq.com/s/Z_L-8NQcJOYSteEYWj4A9Q最近我经常会收到很多私信,其中很大一部分都是关于C++就业的问题。比如C++就业都有哪些方向?犹豫要不要学习C++的,C++卷不卷之类的?当然还有很多稀奇古怪的问题……今天就统一回答下,希望能帮到有类似问题的朋友。其实C++的就业方向有很多,基本对性能有极致要求的方向都会用到C++。C++现在很大的一块就是嵌入式开发,嵌入式相关的岗位其实一直都挺多,以硬件产品的公司为主,包括华为、小米、viv原创 2022-06-21 21:56:19 · 2217 阅读 · 1 评论 -
【C/C++开源库】环形队列,消息队列库
一、环形队列库之前介绍过一个环形缓冲库:【C语言开源库】在CLion上使用一个轻量的适合嵌入式系统的环形缓冲库ring buffer 和C语言Unity单元测试框架环形缓冲库的设置是非常灵活的,可以根据实际项目的需要来设计。下面分享一些环形缓冲库的设置,可以参考一下:https://github.com/MaJerle/lwrb数据结构之环形缓冲区-C语言实现[C语言创建循环缓冲区(环形缓冲区)-- Circular Buffer](https://www.cnblogs.com/youngju原创 2022-05-20 18:45:20 · 2222 阅读 · 0 评论 -
【C/C++开源库】适合嵌入式的定时器调度器
一、背景在嵌入式软件中,我们经常需要使用定时功能,比如每1s执行某个功能,比如触发了某个条件之后持续1s。如果每次遇到定时的功能,我们都自己去计数,这会让我们的代码很混乱,因此我们有必要准备几个好用的定时器调度器模块。二、MultiTimer简介MultiTimer 是一个软件定时器扩展模块,可无限扩展你所需的定时器任务,取代传统的标志位判断方式, 更优雅更便捷地管理程序的时间触发时序。项目地址:https://github.com/0x1abin/MultiTimer/blob/developm原创 2022-05-20 18:44:00 · 1648 阅读 · 0 评论 -
C语言类型转换-自动类型转换、强制类型转换、指针类型转换
数据类型转换就是将数据(变量、数值、表达式的结果等)从一种类型转换为另一种类型。自动类型转换自动类型转换就是编译器默默地、隐式地、偷偷地进行的数据类型转换,这种转换不需要程序员干预,会自动发生。将一种类型的数据赋值给另外一种类型的变量时就会发生自动类型转换,例如:float f = 100;100 是 int 类型的数据,需要先转换为 float 类型才能赋值给变量 f。再如:int n = f;f 是 float 类型的数据,需要先转换为 int 类型才能赋值给变量 n。在赋值运算中,原创 2022-05-20 18:42:53 · 4576 阅读 · 1 评论 -
如何把CPP源程序改写成C语言?
转载于:https://mp.weixin.qq.com/s/Xk5k_UAItEndEGrUsQr-Yw曾经参与过公司的bpp项目,就是bluetooth print profile。由于使用了hpijs的开源包,但是是C++的。由于C++解释器比C语言解释器占用的存储空间要大500k左右。为了节省有限的存储空间,降低成本,同时也为了提高效率,将用C++语言写的源程序用C语言改写是很有必要的。C++与C区别最大的就是C++中的类的概念和特性,将C++改为C的问题,就转换成如何将类化去的问题。**方法原创 2022-04-25 22:45:30 · 3016 阅读 · 0 评论 -
从C语言来理解文件系统
文章目录一、文件、文件系统二、C语言文件操作详解C语言中的文件是什么?文件流C语言fopen函数的用法,C语言打开文件详解fopen() 函数的返回值判断文件是否打开成功fopen() 函数的打开方式关闭文件实例演示文本文件和二进制文件到底有什么区别?文本文件和二进制文件的区别fopen() 中的文本方式和二进制方式C语言fgetc和fputc函数用法详解(以字符形式读写文件)字符读取函数 fgetc对 EOF 的说明字符写入函数 fputc两点说明C语言fgets和fputs函数的用法详解(以字符串的形式原创 2022-04-25 22:28:39 · 1052 阅读 · 0 评论 -
C语言#和##的使用方法和宏嵌套
推荐下面几篇好文:C语言 宏嵌套的展开规则C语言中define的全部使用方法总结C语言宏的定义和宏的使用方法(#define)C语言宏定义中#与##的用法原创 2022-04-20 23:09:31 · 910 阅读 · 0 评论 -
【C/C++开源库】适合单片机/嵌入式的C语言单元测试库
一、为什么需要单元测试?最近在项目开发过程中,有个感悟:作为软件开发人员,应当对自己写的代码进行基本的单元测试。所谓基本的单元测试是包括该软件开发人员所复杂模块中所有函数的基本功能测试,异常处理等。完成这些基本的单元测试可以保证该函数该模块的基本功能。在软件开发的过程中,程序员写bug几乎是不可避免的。但是写完代码之后,对该代码进行基本的功能测试可以保证该代码基本可用,可能存在bug,但是正常情况下的基本功能可以实现。别看这个实现正常情况下的基本功能这个要求看起来简单,但其实经常被大家忽略。在此重新强调原创 2022-03-13 14:32:28 · 7813 阅读 · 2 评论 -
linux下configure,make(makefile),cmake命令详解-makefile和CMakeList.txt编写方法
文章目录一、从Linux上使用源码安装程序说起二、makefile和CMakeList.txt编写方法Makefile教程:Makefile文件编写1天入门Makefile文件是什么?Makefile文件中包含哪些规则?1) 显式规则2) 隐晦规则3) 变量的定义4) 文件指示5) 注释Makefile的工作流程Makefile的工流程清除工作目录中的过程文件Makefile通配符的使用Makefile变量的定义和使用变量的定义变量的基本赋值简单赋值递归赋值条件赋值追加赋值Makefile命令的编写命令回显原创 2022-01-04 00:41:28 · 3791 阅读 · 0 评论 -
C/C++调试总结:IDE(visual studio和Dev C++)和GDB使用方法
文章目录一、IDE调试总结二、GDB调试教程:1小时玩转Linux gdb命令GDB是什么?GDB是什么GDB下载和安装教程快速安装GDB源码安装GDB如何在Windows平台上安装GDB调试器?MinGW安装GDB调试器1、在线安装GDB调试器2、手动安装GDB调试器3、修改PATH环境变量GDB调试C/C++程序使用GDB的前期准备启动GDB调试器调用GDB调试器的4种方式调用GDB的方式2) 调试尚未执行的程序3) 调试正在执行的程序4) 调试执行异常崩溃的程序GDB调试器启动可用参数gdb run(原创 2022-01-04 00:40:26 · 6503 阅读 · 0 评论 -
C/C++语言性能分析方法及性能分析工具的使用
文章目录一、从算法复杂度都程序性能一、事后统计的方法二、事前分析估算的方法三、求解算法的时间复杂度的具体步骤四、算法复杂度和程序性能之间的关系五、执行什么语句耗时?不同语句执行时间量级分析整型加和减:浮点型加和减测试打印printf函数调用二、程序性能分析工具1.gprofgprof介绍gprof安装gprof使用步骤实战一:用gprof测试基本函数调用及控制流测试代码操作步骤一、从算法复杂度都程序性能我们第一次接触关于代码性能相关概念,应该是在学数据结构中的算法时间复杂度上面。算法的时间复杂度反映了原创 2021-12-30 20:44:16 · 7912 阅读 · 0 评论 -
为什么C++没有C语言快?
作者:高性能架构探索链接:https://www.zhihu.com/question/507790994/answer/2287288696来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。害,只是你自己不会用或者不了解里面的特性罢了答主举个最简单的c下的输入输出(scanf&printf)和c++下面的输入输出(cin && cout)const int num=1000000; void write() { ofst.原创 2021-12-28 22:58:23 · 2217 阅读 · 0 评论 -
为什么C++没有Python那么多开源库?
链接:https://www.zhihu.com/question/375368576/answer/1059898195看了好多回答,还是觉得有更本质的原因的,根源还是在C++这个语言特性上为什么C++没有Python之类语言这样活跃的生态?我觉得根本原因在于C++没有解决好一个问题:菱形依赖什么叫菱形依赖呢?就是说A依赖B,A也依赖C,但是B和C同时依赖D,并且我们限定D并不是STL这样的标准库,BCD都是开源库。为了限定到C++,我们这里BCD都是C++库,采用源码的方式发布。这种情况在生态.原创 2021-12-28 22:57:48 · 1136 阅读 · 0 评论 -
现在快2022年了,c++为什么还要实现(.cpp)和声明(.h)分开?像 Java 或 C# 都不需要声明头文件,C++ 委员会为什么不解决这个问题?
链接:https://www.zhihu.com/question/506962663/answer/2278836594因为 C++ 牵扯面更广,改起来更麻烦。很多语言其实都有一个事实上的实现标准,然后别人都得兼容它,委员会的话语权就相对比较有限。比如 Python 有一个 CPython 作为事实标准,作者想改那就改了,然后在文档里边体现一句,其它的 python 实现基本都得考虑与它兼容。比如 Java 无论怎么改,都还是要以 sun 的那个为兼容性基础,不与它兼容的都是异端。那么只要它改了.原创 2021-12-20 22:57:02 · 1397 阅读 · 0 评论 -
Linux中C语言标准库glibc源码下载
在这篇文章理清gcc、libc、glibc、libc++、libstdc++的关系,我们大概理解了libc,glibc之间的一些关系。下面我们就开了解一些Linux中C语言标准库glibc源码。在这里https://ftp.gnu.org/gnu/libc/,我们可以选择相应的版本下载。下载解压之后,我们可以看到目录结构如下:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-StwsuEJd-1639835986034)(https://raw.githubuserc.原创 2021-12-18 22:00:03 · 3565 阅读 · 0 评论 -
理清gcc、libc、glibc、libc++、libstdc++的关系
转载一篇好文:https://www.jianshu.com/p/a3c983edabd1当你在Linux下写C/C++代码的时候,是不是会遇到许多编译链接的问题?时不时报个glibc,gcc,g++等相关的错误, 很多时候都无从下手,而且比较混乱, 这也是编译链接过程中经常出现的问题。这篇文章不是去介绍如何编译链接,而是理清编译链接过程中碰到的一些概念和出现的问题。尤其是 libc,glib,glibc,eglibc,libc++,libstdc++,gcc,g++。从libc说起。libc.原创 2021-12-18 21:44:31 · 8481 阅读 · 0 评论 -
【池化技术】池化技术基础和原理
文章目录一、概念二、应用1. 线程池2. 连接池3.内存池三、实例一、概念池化技术指的是提前准备一些资源,在需要时可以重复使用这些预先准备的资源。在系统开发过程中,我们经常会用到池化技术。通俗的讲,池化技术就是:把一些资源预先分配好,组织到对象池中,之后的业务使用资源从对象池中获取,使用完后放回到对象池中。这样做带来几个明显的好处:资源重复使用, 减少了资源分配和释放过程中的系统消耗。比如,在IO密集型的服务器上,并发处理过程中的子线程或子进程的创建和销毁过程,带来的系统开销将是难以接受的。所以原创 2021-12-12 23:02:12 · 5733 阅读 · 0 评论 -
【池化技术】线程池技术原理和C语言实现
文章目录一、基础概念进程和线程多进程和多线程区别二、线程池技术一、基础概念在讲线程池技术之前,我们先对操作系统中的一些基础概念,比如进程、线程、线程的创建与销毁等进行说明。进程和线程进程一个在内存中运行的应用程序。每个进程都有自己独立的一块内存空间,一个进程可以有多个线程,比如在Windows系统中,一个运行的xx.exe就是一个进程。线程进程中的一个执行任务(控制单元),负责当前进程中程序的执行。一个进程至少有一个线程,一个进程可以运行多个线程,多个线程可共享数据。与进程不同的是同类的多个原创 2021-12-12 23:00:42 · 1026 阅读 · 0 评论 -
【池化技术】内存池技术原理和C语言实现
文章目录一、基础概念1.一个可执行程序占用的内存分为哪几个区?一个进程的虚拟内存区域有哪些?2.静态内存分配和动态内存分配二、malloc实现原理malloc内存分配(下面算是正常一般的情况了)三、使用C语言实现一个内存池1.C语言实现一个内存池一、基础概念在讲内存池技术之前,咱们先对一些基础概念进行阐述,以便能更好的讨论问题。1.一个可执行程序占用的内存分为哪几个区?一个进程的虚拟内存区域有哪些?C语言在内存中一共分为如下几个区域,分别是:内存栈区(stack): 存放局部变量名;内存原创 2021-12-12 22:58:19 · 5892 阅读 · 4 评论 -
二进制文件和库之间有什么区别?
问题我正在尝试了解文件系统层次结构标准。我已经查找了二进制文件和库,并且据我目前的理解:二进制文件是二进制格式的计算机可读代码文件,它们直接用位控制CPU和处理器。为了方便起见,库是可由各种程序使用的函数-例如,当您需要PHP Javascript中的模块时。这种理解正确吗?如果是这样,为什么我们仍将库和二进制文件分开?有些库是二进制文件,对不对?还有一些二进制文件(cat,less,date,rm,cp等)被使用和重用,就好像它们是库一样。有人可以帮助解释它们的区别,并帮助我为这两个单词找到更好原创 2021-12-04 23:26:09 · 1276 阅读 · 0 评论 -
什么是包管理器,C++ 有没有像 pip、npm、gem 一样的包管理工具?
文章目录一、包管理器什么是包?RPM包管理器dpkg包管理器二、C++ 有没有像 pip、npm、gem 一样的包管理工具?三、C++包管理器有哪些1. [Conan](https://github.com/conan-io/conan)2. [Buckaroo](https://github.com/LoopPerfect/buckaroo)3. [vcpkg](https://github.com/microsoft/vcpkg)4. [clib](https://github.com/clibs/cl原创 2021-12-04 23:24:36 · 8285 阅读 · 0 评论 -
为什么看到这么多人不推荐C++?
转一个回答。链接:https://www.zhihu.com/question/22853451/answer/2084675682其实现在也越来越发现,C++老是在弄那些语言特性,当然有一些好用的,但是让C++这门语言也越来越臃肿。使得学习成本很高,而且普遍实现某个功能,可以有多个不同的方法,使得代码的统一性不好。除此之外,C++的标准库和STL库功能太匮乏了,大家都调侃C++就是用来刷LeetCode的,现在C++就是缺一个好的包管理器,不管是标准库还是第三方库,这样可以让C++开发变得更高效率。原创 2021-12-04 23:22:10 · 1260 阅读 · 4 评论 -
Dev C++调试程序方法详解
分享一篇站长的关于调试的文章:Dev C++调试程序方法详解Dev C++算是兼容性很好使用很方便的IDE了,记录一下调试方法,以备不时之需。所谓调试程序,就是控制编译器一行一行地执行代码,过程中可以清楚看到每个变量值的变化情况、函数的调用过程等,进而发现程序中隐藏的错误或者低效的代码。作为一款免费、开源的 C/C++ IDE,Dev C++ 内嵌 GCC 编译器和 GDB 调试器,既能编译、运行程序,也能调试程序。本节,我们以一段完整的 C 语言程序为例,系统地学一下如何用 Dev C++ 调试程序原创 2021-12-04 18:15:34 · 29769 阅读 · 12 评论 -
C/C++字符串基础,类型,使用方法大全(字符,字符串,字符数组,字符串函数,C++ string)
文章目录一、前言二、C/C++字符串1.字符字符的表示字符的输出字符与整数2.字符和字符串编码源文件使用什么编码窄字符串使用什么编码总结3.ASCII编码了解对控制字符的解释NUL (0)SOH (1)STX (2) 和 ETX (3)BEL (7)BS (8)HT (9)LF (10)VT (11)FF (12)CR (13)SO (14) 和 SI (15)DLE (16)DC1 (17)DC3 (19)EM (25)FS(28)GS(29)RS(30)US(31)DEL (127)4.C语言转义字符5原创 2021-11-27 23:17:35 · 3263 阅读 · 1 评论 -
C语言跳转语句(break语句,continue语句,goto语句,return语句,跳转函数setjmp和longjmp)
文章目录一、前言二、跳转语句1. break 语句2. continue 语句3. goto 语句4. return 语句三、跳转函数1. C标准库一、前言跳转语句(jump statement)可以中断当前程序的执行流程,并从另一个不同的点继续执行程序。如果程序跳转到变量的作用域范围之外,变量会被销毁。C 语言有四种语句会造成无条件跳转:break、continue、goto 和 return。跳转语句的缺点是只能在函数内部之间跳转。跳转函数setjmp和longjmp可以跨越函数跳转二、跳转语句原创 2021-11-07 01:17:23 · 9982 阅读 · 0 评论 -
推荐一些嵌入式、C/C++的开源库和项目
前言想用代码实现一个功能时,我们可以先看看是否有前辈已经实现了该功能,并且开源分享在网上。一般我们自己造出来的轮子的可用性基本上是很难和大神们造的轮子相比的。因此多了解一下优秀的开源库的使用,可以让我们编码的时候少走很多弯路。之前我就做了一个系列博客,关于分享C、C++的开源库。文章如下:【C语言开源库】在Clion上使用开源库cJSON【C语言开源库】C语言必备实用第三方库Melon(包括数据结构算法)【C语言开源库】C语言开源库zlog的使用【C语言开源库】在CLion上使用一个轻量的适合原创 2021-11-06 09:00:09 · 5952 阅读 · 0 评论 -
Clion中编译C/C++混合代码
今天在Clion中编译C/C++语言时,出现了一个不容易发现的错误。项目文件包括三个文件三个文件其实都是用C语言写的,只是第一个文件的后缀是.cpp。如果在这种情况下直接编译,会出现一下报错上面的报错显示undefined reference to `GetMemblock(MEMPOOL*)'但是实际上这个函数在头文件中是声明过的。这个时候我想到了C语言和C++的混合编程问题,在这个问题中,编译器会把main.cpp识别成C++文件,pool.c则被识别成C文件。因为C编译器和C++编译器原创 2021-09-22 21:52:56 · 2388 阅读 · 1 评论