开源一套正在建设的现代 C++ 教程!

开源一套正在建设的现代 C++ 教程!

🚀开源一套正在建设的现代 C++ 教程!

笔者吐槽:靠有点像卖课的,但真不是,笔者纯出于兴趣维护的。笔者想了想,有时候光看各种各样的文章。显得太零碎。亮出来代码示例吧,显得太冗余。那为什么不专门维护一个仓库好好做这个事情呢?

所以笔者决定,试试看利用Github仓库托管一下。

TL;DR

好的教程都有TL;DR,一句话——这边请:

GitHub Pages: 点击访问,获得更好更加流畅的阅读体验(嘶,Github静态网页有可能访问速度比较慢,如果有朋友有需求,可以尝试看看下面的仓库克隆下来本地预览)

啥,想看看原仓库,在这里:

👉:Awesome-Embedded-Learning-Studio/Tutorial_AwesomeModernCPP: 现代 C++ 嵌入式(MCU/Linux)开发完整教程,深入讲解 C++11–C++23、零开销抽象、RAII 与性能优化!

现在正在想办法看看支持模拟机和真机实战确保代码可靠。(别喷别喷,方案真没想好,感兴趣的话朋友随意在评论区提意见,小的速速核时是否可行!)

所有的文章还会持续的在公众号,知乎和ZEEKLOG上进行同步!请各位放心(含泪干活中)


项目介绍

Tutorial_AwesomeModernCPP 是一套完整的、系统化的嵌入式现代 C++ 开发教程。不计划只停留在简单的语法介绍,因为那样,我们更应该去看CPPReference。而是尝试探讨如何在嵌入式系统中高效使用 C++,涵盖性能优化、内存管理、硬件交互等核心主题。

🌟 项目亮点

1️⃣ 系统化的知识体系

教程从零开始,循序渐进地构建知识体系:

Chapter 0: 前言与基础 ──────┐ Chapter 1: 构建工具链 │ Chapter 2: 零开销抽象 ├── 核心基础 Chapter 3: 内存与对象管理 │ Chapter 4: 编译期计算 ─┘ │ ├─→ Chapter 5: 内存管理策略 ├─→ Chapter 6: RAII 与智能指针 ├─→ Chapter 7: 容器与数据结构 ├─→ Chapter 8: 类型安全与工具类型 ├─→ Chapter 9: 函数式编程特性 └─→ Chapter 10: 并发与原子操作 
2️⃣ 完整的代码示例
  • 160+ 可独立编译的代码文件
  • 44 个 CMake 项目
  • 涵盖 STM32、Linux 等多种平台
  • 每个示例都有详细注释
// 示例:RAII 管理 GPIO 引脚classGPIOPin{public:GPIOPin(uint8_t pin, GPIODir dir)noexcept{hal_gpio_config(pin_, dir);}~GPIOPin()noexcept{// 自动恢复引脚状态hal_gpio_config(pin_, GPIODir::Input);}// 禁止拷贝,允许移动GPIOPin(const GPIOPin&)=delete;// ...};
3️⃣ 现代化的学习体验
  • 🏷️ 标签分类 - 按主题快速查找相关内容
  • 📊 难度分级 - beginner / intermediate / advanced
  • 🔍 智能导航 - 自动推荐相关文章
  • ⏱️ 阅读时间 - 帮助规划学习进度

核心内容预览

📚 零开销抽象

教你如何在嵌入式环境中安全使用 C++ 的抽象能力,而不产生额外的运行时开销。

🧠 RAII 与智能指针

资源自动管理是 C++ 的杀手锏。在嵌入式场景下,RAII 可以让你的外设管理更安全、更简洁。

📦 嵌入式友好的容器

std::arraystd::span、循环缓冲区…掌握这些工具,告别裸数组操作。

⚡ 编译期编程

constexprconsteval、模板元编程…把计算从运行时转移到编译时,零开销!

🔗 并发与原子

在多核 MCU 上编写安全的高效代码,掌握 std::atomic 和内存模型。


如何开始学习

🌐 在线阅读

教程已部署为静态网站,方便随时访问:

GitHub Pages: 点击访问

💻 本地运行

哈?你说想本地跑起来吗?

# 克隆仓库git clone https://github.com/Awesome-Embedded-Learning-Studio/Tutorial_AwesomeModernCPP.git cd Tutorial_AwesomeModernCPP # 安装依赖并启动预览bash scripts/mkdoc_setup_local_dependency.sh bash scripts/local_preview.sh # 打开浏览器访问 http://127.0.0.1:8000

📖 学习建议

  1. 按顺序学习 - 教程设计循序渐进,建议从 Chapter 0 开始
  2. 动手实践 - 每个示例代码都可以独立编译运行
  3. 参考标签 - 遇到问题时,通过标签系统查找相关内容
  4. 循序渐进 - 根据难度等级选择适合的内容

适用人群

人群收益
嵌入式 C 开发者掌握现代 C++,提升代码质量
C++ 初学者了解 C++ 在嵌入式中的正确用法
嵌入式工程师学习资源受限环境下的最佳实践
计算机专业学生系统学习嵌入式 C++ 开发

开源贡献

本项目由 Awesome Embedded Learning Studio 维护,采用 MIT 协议开源。我们欢迎任何形式的贡献:

  • 📝 修正错别字和语法错误(别骂了别骂了,真是笔误)
  • 💡 提出改进建议(仓库有些CI流程,但是笔者不太熟悉CI,其他地方都可以随意Issue)
  • 🔧 提交代码改进(一些代码示例并不好,或者写法非常不规范,笔者也是C++刚学没太久,希望各位前辈批评!)
  • 📖 完善文档(有一些笔者必须指出是AI写,我审核修改的,肯定有不完美的地方,欢迎批评!)
  • 🐛 报告 Bug(Issue,请,速速修我)

仓库地址: https://github.com/Awesome-Embedded-Learning-Studio/Tutorial_AwesomeModernCPP


结语

每一次写文章都要纠结一会结语。那就这样——

换一种更新的方式,理解现代C++。也让嵌入式开发更现代、更高效、更优雅!

私货时间

到这里就可以溜了各位,下面是笔者的真私货

Read more

【探寻C++之旅】C++11 深度解析:重塑现代 C++ 的关键特性

【探寻C++之旅】C++11 深度解析:重塑现代 C++ 的关键特性

请君浏览 * 前言 * 1. C++的发展历史 * 2. 列表初始化:统一对象初始化的优雅方案 * 2.1 从 C++98 到 C++11 的突破 * 2.2 std::initializer_list:容器初始化的 “神器” * 3. 右值引用和移动语义:彻底解决拷贝性能痛点 * 3.1 左值 vs 右值 * 3.2 左值引用 vs 右值引用 * 3.3右值引用的使用场景 * 3.3.1参数匹配 * 3.3.2 类型分类 * 3.3.3 移动构造和移动赋值

By Ne0inhk
C++ 虚函数与纯虚函数:多态的核心实现基石

C++ 虚函数与纯虚函数:多态的核心实现基石

C++ 虚函数与纯虚函数:多态的核心实现基石 💡 学习目标:深度理解虚函数与纯虚函数的本质区别,掌握虚函数表的底层原理,能够灵活运用二者设计具备多态特性的类结构。 💡 学习重点:虚函数的声明与重写规则、纯虚函数与抽象类的使用场景、虚函数表的工作机制、虚函数的常见陷阱与解决方案。 一、虚函数的本质与定义 ✅ 结论:虚函数是 C++ 实现动态多态的核心,通过在基类成员函数前添加 virtual 关键字,允许派生类重写该函数,并在运行时根据对象的实际类型调用对应版本。 1.1 虚函数的声明语法 虚函数的声明必须在基类中进行,语法格式如下: class 基类名 {public:virtual 返回值类型 函数名(参数列表){// 函数体}}; 1.2 虚函数的核心特性 1. 运行时绑定:函数调用关系在程序运行时确定,而非编译时。 2. 重写规则:派生类重写的函数必须与基类虚函数的函数名、参数列表、返回值类型完全一致(协变类型除外)。 3.

By Ne0inhk
Redis核心通用命令深度解析:结合C++ redis-plus-plus 实战指南

Redis核心通用命令深度解析:结合C++ redis-plus-plus 实战指南

前言:为何选择 Redis 与 C++? 在当今这个数据驱动的时代,高性能的数据存储与访问是构建现代化应用的基石。Redis,作为一个开源的、基于内存的键值对存储数据库,以其无与伦比的读写速度、丰富的数据结构、以及灵活的应用场景(缓存、消息队列、会话存储、排行榜等),成为了后端开发者的瑞士军刀。 与此同时,C++ 作为一门追求极致性能的编程语言,长期以来在游戏开发、金融交易、高性能计算等领域占据着主导地位。当 C++ 的高性能与 Redis 的高速度相结合时,我们便能够构建出响应迅捷、吞吐量巨大的应用程序。 然而,要将二者优雅地结合起来,我们需要一个强大的“桥梁”——Redis 客户端库。redis-plus-plus 就是这样一个专为现代 C++ (C++11 及以上) 设计的优秀库。它不仅封装了 Redis 的原生协议,提供了类型安全、易于使用的 API,

By Ne0inhk
【C++】C++异常

【C++】C++异常

🎬 个人主页:MSTcheng · ZEEKLOG 🌱 代码仓库 :MSTcheng · Gitee 🔥 精选专栏: 《C语言》 《数据结构》 《算法学习》 《C++由浅入深》 💬座右铭:路虽远行则将至,事虽难做则必成! 在前面的文章中,我们已经介绍了C++11的一些新特性。本文将和下一篇一起为大家讲解C++的最后两个重要主题:异常处理和智能指针。 文章目录 * 一、异常的概念及使用 * 1.1异常的概念 * 1.2异常的分类 * 1.3异常的抛出与捕获 * 1.4栈展开 * 1.5 查找匹配的处理代码 * 1.6异常重新抛出 * 1.7异常的安全问题 * 1.8异常规范 * 二、总结 一、异常的概念及使用 1.1异常的概念 异常(Exception)是指在程序执行过程中发生的意外或错误情况,

By Ne0inhk