人民邮电出版社有限公司店铺主页二维码
人民邮电出版社有限公司 微信认证
人民邮电出版社微店,为您提供最全面,最专业的一站式购书服务
微信扫描二维码,访问我们的微信店铺
你可以使用微信联系我们,随时随地的购物、客服咨询、查询订单和物流...

嵌入式C++实战:从C语言无缝切换到现代C++ 开发指南自动控制 汽车电子 ArmKeilMDK

69.80
运费: ¥ 0.00-20.00
嵌入式C++实战:从C语言无缝切换到现代C++ 开发指南自动控制 汽车电子 ArmKeilMDK 商品图0
嵌入式C++实战:从C语言无缝切换到现代C++ 开发指南自动控制 汽车电子 ArmKeilMDK 商品图1
嵌入式C++实战:从C语言无缝切换到现代C++ 开发指南自动控制 汽车电子 ArmKeilMDK 商品图2
嵌入式C++实战:从C语言无缝切换到现代C++ 开发指南自动控制 汽车电子 ArmKeilMDK 商品图3
嵌入式C++实战:从C语言无缝切换到现代C++ 开发指南自动控制 汽车电子 ArmKeilMDK 商品图4
嵌入式C++实战:从C语言无缝切换到现代C++ 开发指南自动控制 汽车电子 ArmKeilMDK 商品缩略图0 嵌入式C++实战:从C语言无缝切换到现代C++ 开发指南自动控制 汽车电子 ArmKeilMDK 商品缩略图1 嵌入式C++实战:从C语言无缝切换到现代C++ 开发指南自动控制 汽车电子 ArmKeilMDK 商品缩略图2 嵌入式C++实战:从C语言无缝切换到现代C++ 开发指南自动控制 汽车电子 ArmKeilMDK 商品缩略图3 嵌入式C++实战:从C语言无缝切换到现代C++ 开发指南自动控制 汽车电子 ArmKeilMDK 商品缩略图4

商品详情

书名:嵌入式C++实战:从C语言无缝切换到现代C++
定价:99.8
ISBN:9787115692719
作者:[波黑]阿马尔?马哈茂德贝戈维奇(Amar Mahmutbegovi?)
版次:第1版
出版时间:2026-03

内容提要:
本书系统阐述了现代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++开发的核心能力,开发出更可靠,灵活,易维护且*的嵌入式系统。



作者简介:
阿玛尔?马哈茂德贝戈维奇(Amar Mahmutbegovi?)是Semblie公司的联合*兼工程负责人,他带领团队将现代 C++ 技术应用于固件开发。他的专业领域涵盖蓝牙低功耗(BLE)消费类设备与医疗设备开发,为包括初创企业在内的各类客户提供精密成熟的解决方案。阿玛尔对创新的执着追求,助力众多电子产品理念成功落地。 在嵌入式开发社区中,阿玛尔通过博客与领英(LinkedIn)积极分享C++语言的优势,同时为年轻工程师提供指导,帮助他们提升现代开发实践技能。他的工作目标是让嵌入式系统更易于开发、维护且具备可扩展性,为全球*搭建起传统开发方法与现代*技术之间的桥梁。

目录:
第1部分 嵌入式开发中的C++简介
第1章 破除关于C++的常见误解 2
1.1 C++的简要发展史 3
1.2 带类的C语言 4
1.2.1 现代C++ 4
1.2.2 泛型类型 5
1.2.3 constexpr说明符 12
1.3 代码膨胀与运行时开销 16
1.3.1 构造函数与析构函数 16
1.3.2 优化 20
1.3.3 模板 22
1.3.4 RTTI与异常 23
1.4 总结 25
第2章 资源受限嵌入式系统的挑战 27
2.1 *关键型与硬实时嵌入式系统 27
2.1.1 *气囊控制单元与实时性需求 28
2.1.2 固件性能与非确定性测量 29
2.2 动态内存管理 32
2.2.1 内存碎片 33
2.2.2 C++动态内存管理的*关键型指南 34
2.2.3 C++标准库中的动态内存管理 35
2.3 禁用不需要的C++特性 39
2.4 总结 41
第3章 嵌入式C++生态系统 42
3.1 编译器与开发环境 42
3.1.1 Arm Keil MDK与Arm嵌入式编译器 44
3.1.2 IAR C/C++编译器与IAR Arm嵌入式工作台 45
3.1.3 厂商支持的IDE与GCC 46
3.2 静态分析器 48
3.3 单元测试 51
3.4 性能分析 55
3.5 总结 57
第4章 搭建C++嵌入式项目开发环境 58
4.1 现代软件开发环境的需求 58
4.1.1 编译器 59
4.1.2 构建自动化 60
4.1.3 模拟器 60
4.1.4 代码编辑器 60
4.2 容器化开发环境 61
4.2.1 用CMake构建“Hello, World!”程序 62
4.2.2 使用CMake构建固件 65
4.3 容器化开发环境与Visual Studio Code的结合 66
4.4 总结 70
第2部分 C++基础
第5章 类—C++应用的构建块 72
5.1 封装 72
5.1.1 setter与getter 74
5.1.2 静态方法 75
5.1.3 结构体 76
5.2 存储期与初始化 77
5.2.1 非静态成员的初始化 77
5.2.2 静态成员初始化 81
5.3 继承与动态多态 82
5.3.1 虚函数 84
5.3.2 动态多态 87
5.4 总结 88
第6章 类外核心特性—C++进阶基础基石 89
6.1 命名空间 89
6.1.1 无名命名空间 91
6.1.2 嵌套命名空间 91
6.2 函数重载 92
6.3 与C语言的互操作性 93
6.3.1 C++中的外部链接和语言链接 94
6.3.2 C++中的C标准库 94
6.4 引用 95
6.4.1 值类别 96
6.4.2 左值引用 97
6.4.3 右值引用 97
6.5 标准库容器与算法 99
6.5.1 数组 99
6.5.2 容器适配器 100
6.5.3 算法 101
6.6 总结 103
第7章 强化固件—实用的C++错误处理方法 104
7.1 错误码与断言 104
7.1.1 全局错误处理器 107
7.1.2 断言 108
7.2 异常 112
7.3 std::optional与std::expected 114
7.4 总结 117
第3部分 C++*概念
第8章 使用模板构建通用、可复用的代码 120
8.1 模板基础 120
8.1.1 模板函数的调用 121
8.1.2 模板特化 123
8.2 模板元编程 124
8.3 concept 127
8.4 编译时多态 128
8.5 总结 132
第9章 使用强类型提升类型* 133
9.1 隐式转换 133
9.1.1 数值提升与数值转换 135
9.1.2 数组到指针的转换 138
9.1.3 函数到指针的转换 140
9.2 显式转换 141
9.2.1 const_cast 141
9.2.2 static_cast 142
9.2.3 dynamic_cast 144
9.2.4 reinterpret_cast 145
9.3 强类型 150
9.4 总结 154
第10章 使用lambda编写高可读性代码 155
10.1 lambda表达式基础 155
10.2 使用std::function存储lambda表达式 157
10.2.1 命令模式 160
10.2.2 GPIO中断管理器 161
10.3 std::function与动态内存分配 164
10.4 总结 166
第11章 编译时计算 167
11.1 模板 167
11.2 constexpr说明符 169
11.2.1 示例1:MAC地址解析器 171
11.2.2 示例2:生成查找表 173
11.3 consteval说明符 183
11.4 总结 184
第4部分 使用C++解决嵌入式领域问题
第12章 编写C++硬件抽象层(HAL) 186
12.1 内存映射的外设 186
12.1.1 CMSIS内存映射的外设 187
12.1.2 C++中的内存映射外设 188
12.1.3 C++中类型*的内存映射外设 191
12.2 定时器 195
12.3 总结 199
第13章 使用C语言库 200
13.1 在C++项目中使用C语言HAL 200
13.1.1 用于灵活软件设计的UART接口 201
13.1.2 适配器模式中的UART接口 204
13.2 静态类 205
13.3 利用RAII封装littlefs C库 207
13.3.1 LittleFS—适用于微控制器的文件系统 207
13.3.2 基于RAII的C++包装器 210
13.3.3 利用RAII实现更简洁的文件管理 212
13.4 总结 213
第14章 用序列器增强*循环 214
14.1 *循环及序列器的设计动机 214
14.2 设计序列器 216
14.3 存储可调用对象 218
14.4 实现序列器 221
14.5 总结 224
第15章 实用模式—构建温度发布器 225
15.1 观察者模式 225
15.2 运行时实现 227
15.3 编译时实现 230
15.3.1 利用可变参数模板 230
15.3.2 改进编译时实现 233
15.4 总结 235
第16章 设计可扩展的有限状态机 236
16.1 FSM—简单实现 236
16.1.1 描述状态和事件 238
16.1.2 跟踪当前状态和处理事件—FSM类 238
16.1.3 使用ble_fsm类 240
16.1.4 分析输出 241
16.2 FSM—使用状态模式的实现 242
16.2.1 理解状态类接口 242
16.2.2 重构ble_fsm类 244
16.2.3 实现状态模式 245
16.2.4 状态设计模式 246
16.3 使用标签分发的状态模式实现 247
16.4 Boost SML 250
16.5 总结 252
第17章 库与框架 253
17.1 标准库 253
17.1.1 GCC中的独立式实现与宿主式实现 254
17.1.2 数值与数学 254
17.1.3 容器与算法 255
17.1.4 模板元编程 257
17.1.5 嵌入式应用中应避免的标准库部分 258
17.2 嵌入式模板库(ETL) 258
17.2.1 固定大小的容器 258
17.2.2 使用etl::delegate存储可调用对象 259
17.2.3 ETL提供的其他工具 259
17.3 Pigweed 259
17.3.1 Pigweed的Sense教程 260
17.3.2 RPC和协议缓冲区 264
17.4 编译时初始化与构建(CIB) 266
17.4.1 在温度发布器示例中使用CIB 267
17.4.2 扩展温度发布器示例 269
17.5 总结 272
第18章 跨平台开发 273
18.1 编写可移植代码的重要性 273
18.2 SOLID设计原则 274
18.2.1 单一职责原则(SRP) 277
18.2.2 开闭原则(OCP) 277
18.2.3 里氏替换原则(LSP) 278
18.2.4 接口隔离原则(ISP) 278
18.2.5 依赖倒置原则(DIP) 278
18.3 可测试性 278
18.4 总结 281
人民邮电出版社有限公司店铺主页二维码
人民邮电出版社有限公司 微信公众号认证
人民邮电出版社微店,为您提供最全面,最专业的一站式购书服务
扫描二维码,访问我们的微信店铺
随时随地的购物、客服咨询、查询订单和物流...

嵌入式C++实战:从C语言无缝切换到现代C++ 开发指南自动控制 汽车电子 ArmKeilMDK

手机启动微信
扫一扫购买

收藏到微信 or 发给朋友

1. 打开微信,扫一扫左侧二维码

2. 点击右上角图标

点击右上角分享图标

3. 发送给朋友、分享到朋友圈、收藏

发送给朋友、分享到朋友圈、收藏

微信支付

支付宝

扫一扫购买

打开微信,扫一扫

或搜索微信号:renyoushe
人民邮电出版社官方微信公众号

收藏到微信 or 发给朋友

1. 打开微信,扫一扫左侧二维码

2. 点击右上角图标

点击右上角分享图标

3. 发送给朋友、分享到朋友圈、收藏

发送给朋友、分享到朋友圈、收藏