1.痛直:破除嵌式 C++ 性能销、代码复杂等误区,实现从 C 语言到现代 C++(C++23)无缝切换,性能不降级。 2.全栈体系:覆盖嵌式 C++ 从环境搭建、基础语法到模板元编程、设计模式的完整知识,适配资源受限发场景。 3.实战导向:手把手实现硬件抽象层(HAL)、序列器、有限状态机等实战案例,落地 SOLID 原则、RAII 等实践。 4.环境适配:详解 Docker 容器化发环境搭建、ETL 替代方案,解决嵌式内存受限、动态内存管理等核心难题。
售 价:¥
纸质售价:¥77.80购买纸书
6.8
温馨提示:数字商品不支持退换货,不提供源文件,不支持导出打印
为你推荐

内容提要
推荐序
关于作者
关于技术审稿人
前言
资源与支持
第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 总结
买过这本书的人还买过
读了这本书的人还在读
同类图书排行榜