万本电子书0元读

万本电子书0元读

顶部广告

嵌入式C++实战:从C语言无缝切换到现代C++电子书

1.痛直:破除嵌式 C++ 性能销、代码复杂等误区,实现从 C 语言到现代 C++(C++23)无缝切换,性能不降级。 2.全栈体系:覆盖嵌式 C++ 从环境搭建、基础语法到模板元编程、设计模式的完整知识,适配资源受限发场景。 3.实战导向:手把手实现硬件抽象层(HAL)、序列器、有限状态机等实战案例,落地 SOLID 原则、RAII 等实践。 4.环境适配:详解 Docker 容器化发环境搭建、ETL 替代方案,解决嵌式内存受限、动态内存管理等核心难题。

售       价:¥

纸质售价:¥77.80购买纸书

1人正在读 | 0人评论 6.8

作       者:[波黑]阿马尔・马哈茂德贝戈维奇(Amar Mahmutbegović) 著

出  版  社:人民邮电出版社有限公司

出版时间:2026-03-01

字       数:24.4万

所属分类: 科技 > 计算机/网络 > 计算机教材

温馨提示:数字商品不支持退换货,不提供源文件,不支持导出打印

为你推荐

  • 读书简介
  • 目录
  • 累计评论(条)
  • 读书简介
  • 目录
  • 累计评论(条)
本书系统阐述了现代C++(直至C++23)在资源受限嵌式系统发中的应用方法与实践技巧。本书不仅深解析了C++相较于C语言在嵌式发中的核心优势,还全面覆盖了从语言基础到高阶技术,再到实际工程落地的完整知识体系。 全书共18章,分为四大部分。第1部分聚焦嵌式发中C++的认知普及与环境搭建,破除关于C++的常见误解,分析资源受限嵌式系统的发挑战,介绍嵌式C++生态系统的工具,分析工具与测试框架,并指导读者搭建现代化的嵌式C++项目发环境与仿真测试环境。第2部分夯实C++基础核心,详解类的核心机制,命名空间,函数重载等基础特性,以及C++与C语言的互操作性,同时系统梳理各类错误处理技术与异常机制。第3部分深C++高级概念,包括模板与元编程,强类型安全强化,lambda表达式应用及编译时计算等关键技术,助力发者编写通用,高效,高可读性的代码。第4部分聚焦嵌式实际问题解决,演示硬件抽象层(HAL)实现,C库协作方法,讲解序列器优化,设计模式应用,有限状态机设计等实用方案,并介绍嵌式发常用库与框架及跨平台发技巧。 本书适合长期使用C语言,希望转型现代C++的嵌式发者阅读,也适合从事低功耗设备,医疗设备,汽车电子,自动驾驶等领域的软硬件发工程师,系统设计工程师及技术爱好者阅读。无论读者是否具备深厚的C++基础,都能通过本书掌握嵌式C++发的核心能力,发出更可靠,灵活,易维护且高效的嵌式系统。<br/>【推荐语】<br/>1.痛直:破除嵌式 C++ 性能销、代码复杂等误区,实现从 C 语言到现代 C++(C++23)无缝切换,性能不降级。 2.全栈体系:覆盖嵌式 C++ 从环境搭建、基础语法到模板元编程、设计模式的完整知识,适配资源受限发场景。 3.实战导向:手把手实现硬件抽象层(HAL)、序列器、有限状态机等实战案例,落地 SOLID 原则、RAII 等实践。 4.环境适配:详解 Docker 容器化发环境搭建、ETL 替代方案,解决嵌式内存受限、动态内存管理等核心难题。 5.工具生态:涵盖 Arm Keil/IAR/GCC 等主流工具、静态分析 / 单元测试 / 性能分析工具,配套仿真测试环境与实操素材。<br/>【作者】<br/>阿玛尔?马哈茂德贝戈维奇(Amar Mahmutbegovi?)是Semblie公司的联合创始人兼工程负责人,他带领团队将现代 C++ 技术应用于固件发。他的专业领域涵盖蓝牙低功耗(BLE)消费类设备与医疗设备发,为包括初创企业在内的各类客户提供精密成熟的解决方案。阿玛尔对创新的执着追求,助力众多电子产品理念成功落地。 在嵌式发社区中,阿玛尔通过博客与领英(LinkedIn)积极分享C++语言的优势,同时为年轻工程师提供指导,帮助他们提升现代发实践技能。他的工作目标是让嵌式系统更易于发、维护且具备可扩展性,为全球发者搭建起传统发方法与现代高效技术之间的桥梁。<br/>
目录展开

内容提要

推荐序

关于作者

关于技术审稿人

前言

资源与支持

第1部分嵌入式开发中的C++简介

第1章 破除关于C++的常见误解

1.1 C++的简要发展史

1.2 带类的C语言

1.2.1 现代C++

1.2.2 泛型类型

1.2.3 constexpr说明符

1.3 代码膨胀与运行时开销

1.3.1 构造函数与析构函数

1.3.2 优化

1.3.3 模板

1.3.4 RTTI与异常

1.4 总结

第2章 资源受限嵌入式系统的挑战

2.1 安全关键型与硬实时嵌入式系统

2.1.1 安全气囊控制单元与实时性需求

2.1.2 固件性能与非确定性测量

2.2 动态内存管理

2.2.1 内存碎片

2.2.2 C++动态内存管理的安全关键型指南

2.2.3 C++标准库中的动态内存管理

2.3 禁用不需要的C++特性

2.4 总结

第3章 嵌入式C++生态系统

3.1 编译器与开发环境

3.1.1 Arm Keil MDK与Arm嵌入式编译器

3.1.2 IAR C/C++编译器与IAR Arm嵌入式工作台

3.1.3 厂商支持的IDE与GCC

3.2 静态分析器

3.3 单元测试

3.4 性能分析

3.5 总结

第4章 搭建C++嵌入式项目开发环境

4.1 现代软件开发环境的需求

4.1.1 编译器

4.1.2 构建自动化

4.1.3 模拟器

4.1.4 代码编辑器

4.2 容器化开发环境

4.2.1 用CMake构建“Hello, World!”程序

4.2.2 使用CMake构建固件

4.3 容器化开发环境与Visual Studio Code的结合

4.4 总结

第2部分C++基础

第5章 类——C++应用的构建块

5.1 封装

5.1.1 setter与getter

5.1.2 静态方法

5.1.3 结构体

5.2 存储期与初始化

5.2.1 非静态成员的初始化

5.2.2 静态成员初始化

5.3 继承与动态多态

5.3.1 虚函数

5.3.2 动态多态

5.4 总结

第6章 类外核心特性——C++进阶基础基石

6.1 命名空间

6.1.1 无名命名空间

6.1.2 嵌套命名空间

6.2 函数重载

6.3 与C语言的互操作性

6.3.1 C++中的外部链接和语言链接

6.3.2 C++中的C标准库

6.4 引用

6.4.1 值类别

6.4.2 左值引用

6.4.3 右值引用

6.5 标准库容器与算法

6.5.1 数组

6.5.2 容器适配器

6.5.3 算法

6.6 总结

第7章 强化固件——实用的C++错误处理方法

7.1 错误码与断言

7.1.1 全局错误处理器

7.1.2 断言

7.2 异常

7.3 std::optional与std::expected

7.4 总结

第3部分C++高级概念

第8章 使用模板构建通用、可复用的代码

8.1 模板基础

8.1.1 模板函数的调用

8.1.2 模板特化

8.2 模板元编程

8.3 concept

8.4 编译时多态

8.4.1 奇异递归模板模式(CRTP)

8.5 总结

第9章 使用强类型提升类型安全

9.1 隐式转换

9.1.1 数值提升与数值转换

9.1.2 数组到指针的转换

9.1.3 函数到指针的转换

9.2 显式转换

9.2.1 const_cast

9.2.2 static_cast

9.2.3 dynamic_cast

9.2.4 reinterpret_cast

9.3 强类型

9.4 总结

第10章 使用lambda编写高可读性代码

10.1 lambda表达式基础

10.2 使用std::function存储lambda表达式

10.2.1 命令模式

10.2.2 GPIO中断管理器

10.3 std::function与动态内存分配

10.4 总结

第11章 编译时计算

11.1 模板

11.2 constexpr说明符

11.2.1 示例1:MAC地址解析器

11.2.2 示例2:生成查找表

11.3 consteval说明符

11.4 总结

第4部分使用C++解决嵌入式领域问题

第12章 编写C++硬件抽象层(HAL)

12.1 内存映射的外设

12.1.1 CMSIS内存映射的外设

12.1.2 C++中的内存映射外设

12.1.3 C++中类型安全的内存映射外设

12.2 定时器

12.3 总结

第13章 使用C语言库

13.1 在C++项目中使用C语言HAL

13.1.1 用于灵活软件设计的UART接口

13.1.2 适配器模式中的UART接口

13.2 静态类

13.3 利用RAII封装littlefs C库

13.3.1 LittleFS——适用于微控制器的文件系统

13.3.2 基于RAII的C++包装器

13.3.3 利用RAII实现更简洁的文件管理

13.4 总结

第14章 用序列器增强超级循环

14.1 超级循环及序列器的设计动机

14.2 设计序列器

14.3 存储可调用对象

14.4 实现序列器

14.5 总结

第15章 实用模式——构建温度发布器

15.1 观察者模式

15.2 运行时实现

15.3 编译时实现

15.3.1 利用可变参数模板

15.3.2 改进编译时实现

15.4 总结

第16章 设计可扩展的有限状态机

16.1 FSM——简单实现

16.1.1 描述状态和事件

16.1.2 跟踪当前状态和处理事件——FSM类

16.1.3 使用ble_fsm类

16.1.4 分析输出

16.2 FSM——使用状态模式的实现

16.2.1 理解状态类接口

16.2.2 重构ble_fsm类

16.2.3 实现状态模式

16.2.4 状态设计模式

16.3 使用标签分发的状态模式实现

16.4 Boost SML

16.5 总结

第17章 库与框架

17.1 标准库

17.1.1 GCC中的独立式实现与宿主式实现

17.1.2 数值与数学

17.1.3 容器与算法

17.1.4 模板元编程

17.1.5 嵌入式应用中应避免的标准库部分

17.2 嵌入式模板库(ETL)

17.2.1 固定大小的容器

17.2.2 使用etl::delegate存储可调用对象

17.2.3 ETL提供的其他工具

17.3 Pigweed

17.3.1 Pigweed的Sense教程

17.3.2 RPC和协议缓冲区

17.4 编译时初始化与构建(CIB)

17.4.1 在温度发布器示例中使用CIB

17.4.2 扩展温度发布器示例

17.5 总结

第18章 跨平台开发

18.1 编写可移植代码的重要性

18.2 SOLID设计原则

18.2.1 单一职责原则(SRP)

18.2.2 开闭原则(OCP)

18.2.3 里氏替换原则(LSP)

18.2.4 接口隔离原则(ISP)

18.2.5 依赖倒置原则(DIP)

18.3 可测试性

18.4 总结

累计评论(条) 个书友正在讨论这本书 发表评论

发表评论

发表评论,分享你的想法吧!

买过这本书的人还买过

读了这本书的人还在读

回顶部