- 博客(10)
- 收藏
- 关注
原创 C++模板和多态设计实践
嵌入式设备针对自身硬件有定时监测的需求,根据硬件的不同,监测周期和项目有所区别,但是监测的触发机制和流程是类似的。通过分析,可以利用C++模板和多态的特性,设计一个监测任务基类MonitorTask,针对单个硬件的检测任务Task1~N,继承和实现MonitorTaskA。再通过一个Controller类,来管理Task任务的执行。
2023-06-20 21:07:13
207
原创 嵌入式开发也可以用C++?
2019年,曾对嵌入式项目中的编程语言做过一个调查。其中,C语言以56%的占比稳居第一,C++以23%紧随其后。手头的嵌入式开发项目也是用的C++,于是想总结一下嵌入式中C++的使用心得。在嵌入式开发中,按照应用领域可以简单划分为:单片机 MCU,Linux 驱动/应用。在嵌入式Linux开发中,C++已经是绝对的应用层主力之一。本文所针对的应用领域主要是单片机MCU开发。
2022-11-27 11:41:29
5200
原创 一个经典的嵌入式裸机系统
以上便是嵌入式前后台系统的学习笔记,虽然做嵌入式也有几年了,但也是最近才开始意识到总结和回顾的必要性。如果一个知识点你没办法转换为语言或者文字,你恐怕难以说服自己是真的掌握了。
2022-09-29 23:24:53
1985
原创 C语言链表—理论篇
在工作中发现,许多有问题的程序,究其原因都是在设计之时缺乏对数据表示的深入的思考:一个不经意的变量使用,一个本可以复用却新写的函数,一个性能不佳但是可以快速实现的逻辑等等。......
2022-08-16 21:37:26
399
原创 Git基础篇
Git是一种分布式版本控制工具。这里边提到两个关键词:版本控制和分布式。版本控制指的是一种记录代码内容变化,以便将来查阅特定版本情况的系统。版本控制能够实现每一个阶段性代码的备份,支持多人同时开发维护,并能够在出现错误时及时回退到先前版本,是开发中非常重要的工具。在了解分布式的概念之前,我们先讲一下与之对应的集中式。集中式版本控制系统:采用了客户端-服务器的模式,代码所有版本信息都存放在单一的服务器上集中管理,而开发者通过自己的客户端连接单一服务器,获取最新的文件以及提交更新。在分布式系统之前,集中式已经极
2022-07-06 22:24:40
184
原创 C++语法篇之STL库
STL是Standard Template Library的缩写,即标准模板库。之前在写 Templates 模板的时候,提到过STL对于模板的应用。STL是由多个模板类构成,能够为开发者提供通用的数据结构和算法。STL主要包含以下内容:一个简单的vector示例:创建int类型的向量,并实现初始化、赋值和打印操作。 输出结果: 从上边的例子可以体现出vector的健壮性,vector是一个动态的数组模板,可以在程序运行过程中高效地添加或者删除元素,为程序设计提供了很大的灵活性。最后,关于STL还有很
2022-06-18 21:55:54
1861
3
原创 C++语法篇之 Templates 模板
假如我们需要设计X和Y两个列表,这两个列表具有相似的代码唯一的不同是数据类型,则在C++中实现有如下的选择:共同的基类:在大多数场景并不适用,只是为了一个列表去提炼基类也没必要。 克隆代码:分别对X 和 Y 类型定义各自的列表,能够保证类型安全但是后期维护成本高。 空列表:定义一个没有类型的列表 (void(*))。缺点是类型不安全。除此之外,我们还可以用Template来实现,Template 既能保证重用代码,还能保证类型安全。那我们就来看看Template是如何施展魔法的。Templa.
2022-05-04 22:59:05
1744
原创 C++ 语法篇之 Inline函数
1. 函数调用的开销Inline函数是一种特殊的函数,在引入Inline之前,想再回顾一下函数的调用操作。主要操作如下:将参数推到堆栈。 将返回地址推到堆栈中。 在被调用函数中,准备函数的返回值。 将调用函数时推入堆栈的参数和返回地址推出。Inline函数通过将代码插入到执行出,从而减少了参数压入堆栈和弹出等的开销。如果今后有时间,可以专门说一说函数调用时如何进行。今天我们还是专注在Inline函数本身。2. Inline函数介绍2.1 Inline函数的定义Inline函数,翻
2022-03-29 23:33:03
1553
原创 C++ 语法篇之 static 用法
这周的大部分时间都花了debug上,,在费了一番周折才debug成功之后发现原来是static局部变量搞得鬼。我意识到原来我对于static的用法理解地还不够透彻,所以想结合这个例子再总结一下。希望在今后的coding中,不在同一个地方跌倒。下边是错误代码的示例:Class A{ int foo1(int a);};int A::foo1(int a){ static int i = A_ARRAY[a]; // int i = A_ARRAY[a]; // 业务代码若
2022-02-26 17:43:44
2200
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人