{"id":46867955,"url":"https://awesome-embedded-learning-studio.github.io/Tutorial_AwesomeModernCPP/","last_synced_at":"2026-03-24T21:01:06.155Z","repository":{"id":328431609,"uuid":"1115530652","full_name":"Awesome-Embedded-Learning-Studio/Tutorial_AwesomeModernCPP","owner":"Awesome-Embedded-Learning-Studio","description":"现代 C++ 嵌入式（MCU/Linux）开发完整教程，深入讲解 C++11–C++23、零开销抽象、RAII 与性能优化！","archived":false,"fork":false,"pushed_at":"2026-03-23T10:40:29.000Z","size":13869,"stargazers_count":22,"open_issues_count":0,"forks_count":3,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-24T02:46:09.380Z","etag":null,"topics":["arm","bare-metal","cmake","cplusplus","cpp23","embedded","embedded-systems","mcu","memory-management","modern-cpp","performance-optimization","raii","template-metaprogramming","tutorial","zero-cost-abstraction"],"latest_commit_sha":null,"homepage":"https://awesome-embedded-learning-studio.github.io/Tutorial_AwesomeModernCPP/","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Awesome-Embedded-Learning-Studio.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-12-13T03:18:27.000Z","updated_at":"2026-03-23T10:40:32.000Z","dependencies_parsed_at":"2026-02-02T03:00:50.016Z","dependency_job_id":null,"html_url":"https://github.com/Awesome-Embedded-Learning-Studio/Tutorial_AwesomeModernCPP","commit_stats":null,"previous_names":["awesome-embedded-learning-studio/tutorial_awesomemoderncpp"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Awesome-Embedded-Learning-Studio/Tutorial_AwesomeModernCPP","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Awesome-Embedded-Learning-Studio%2FTutorial_AwesomeModernCPP","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Awesome-Embedded-Learning-Studio%2FTutorial_AwesomeModernCPP/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Awesome-Embedded-Learning-Studio%2FTutorial_AwesomeModernCPP/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Awesome-Embedded-Learning-Studio%2FTutorial_AwesomeModernCPP/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Awesome-Embedded-Learning-Studio","download_url":"https://codeload.github.com/Awesome-Embedded-Learning-Studio/Tutorial_AwesomeModernCPP/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Awesome-Embedded-Learning-Studio%2FTutorial_AwesomeModernCPP/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30905703,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-24T08:58:18.477Z","status":"ssl_error","status_checked_at":"2026-03-24T08:57:59.595Z","response_time":106,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["arm","bare-metal","cmake","cplusplus","cpp23","embedded","embedded-systems","mcu","memory-management","modern-cpp","performance-optimization","raii","template-metaprogramming","tutorial","zero-cost-abstraction"],"created_at":"2026-03-10T19:00:22.798Z","updated_at":"2026-03-24T21:01:06.150Z","avatar_url":"https://github.com/Awesome-Embedded-Learning-Studio.png","language":"C++","funding_links":[],"categories":["📖 关于本教程"],"sub_categories":[],"readme":"# 🚀 Tutorial_AwesomeModernCPP\r\n\r\n![C++](https://img.shields.io/badge/C%2B%2B-11%20%7C%2014%20%7C%2017%20%7C%2020%20%7C%2023-blue?logo=c%2B%2B) ![Embedded](https://img.shields.io/badge/Embedded-STM32%20%7C%20Linux-green) ![License](https://img.shields.io/github/license/Awesome-Embedded-Learning-Studio/Tutorial_AwesomeModernCPP) ![GitHub stars](https://img.shields.io/github/stars/Awesome-Embedded-Learning-Studio/Tutorial_AwesomeModernCPP) ![GitHub issues](https://img.shields.io/github/issues/Awesome-Embedded-Learning-Studio/Tutorial_AwesomeModernCPP)\r\n\r\n\u003e 一套完整的、系统化的嵌入式现代 C++ 开发教程\r\n\r\n\u003cdiv align=\"center\"\u003e\r\n\r\n## 🎯 嵌入式现代C++开发教程\r\n\r\n**从零开始，系统化学习现代 C++ 在嵌入式系统中的实战应用**\r\n\r\n| 12 章 | 70+ 篇文章 | 50+ 示例代码 |\r\n|:-----:|:---------:|:-----------:|\r\n| 零开销抽象 | 内存管理 | 智能指针 | 容器 | 并发 | 函数式 |\r\n\r\n\u003c/div\u003e\r\n\r\n---\r\n\r\n## 📖 目录\r\n\r\n- [关于本教程](#-关于本教程)\r\n- [学习目标](#-学习目标)\r\n- [前置知识](#-前置知识)\r\n- [快速开始](#-快速开始)\r\n- [目录结构](#-目录结构)\r\n- [教程特色](#-教程特色)\r\n- [学习路径](#-学习路径)\r\n- [贡献指南](#-贡献指南)\r\n- [致谢](#-致谢)\r\n- [联系方式](#-联系方式)\r\n- [许可证](#-许可证)\r\n\r\n---\r\n\r\n## 📖 关于本教程\r\n\r\n本项目创建于 2025-12-13，作者 Charliechen。\r\n\r\n本项目隶属于组织 [Awesome-Embedded-Learning-Studio](https://github.com/Awesome-Embedded-Learning-Studio) 的文档教程。\r\n\r\n这是一套完整的、系统化的嵌入式 C++ 开发教程，专注于在资源受限的环境中发挥 C++ 的最大优势。本教程不是简单的语法介绍，而是深入探讨**如何在嵌入式系统中高效使用 C++**，包括性能优化、内存管理、硬件交互等核心主题。\r\n\r\n点击这里，获取更好的阅读体验👉 [静态网页部署](https://awesome-embedded-learning-studio.github.io/Tutorial_AwesomeModernCPP/)\r\n\r\n---\r\n\r\n## 🎯 学习目标\r\n\r\n完成本教程后，您将能够：\r\n\r\n1. ✅ 掌握 C++ 在嵌入式系统中的性能优化技术\r\n2. ✅ 理解零开销抽象和编译期编程\r\n3. ✅ 学会使用现代 C++ 特性提升代码质量\r\n4. ✅ 掌握硬件抽象和驱动程序开发\r\n5. ✅ 构建可测试、可维护的嵌入式软件架构\r\n\r\n---\r\n\r\n## 📋 前置知识\r\n\r\n为了更好地学习本教程，建议您具备以下知识：\r\n\r\n- ✔️ 熟悉 C 语言编程\r\n- ✔️ 了解基本的数据结构和算法\r\n- ✔️ 有一定的嵌入式开发经验\r\n- ✔️ 了解基本的电子电路知识\r\n\r\n---\r\n\r\n## 🚀 快速开始\r\n\r\n### 本项目包含\r\n\r\n- **tutorial/** - 教程 Markdown 文件，包含系统化的学习内容\r\n- **codes_and_assets/** - 示例代码、硬件电路图、PCB 文件等资源\r\n\r\n### 如何开始学习\r\n\r\n1. 阅读 [tutorial/index.md](./tutorial/index.md) 了解教程结构\r\n2. 按照章节顺序学习，从 Chapter 0 开始\r\n3. 参考示例代码加深理解\r\n4. 完成章节练习巩固知识\r\n\r\n---\r\n\r\n## ✨ 教程特色\r\n\r\n### 🏷️ 标签分类系统\r\n\r\n每篇文章都带有标签，方便按主题查找：\r\n\r\n- 📚 **概念类**：RAII、移动语义、零开销抽象、编译期计算\r\n- ⚙️ **语言特性**：constexpr、lambda、CRTP、concepts、coroutine\r\n- 🧠 **智能指针**：unique_ptr、shared_ptr、intrusive_ptr\r\n- 📦 **容器**：array、span、循环缓冲区、侵入式容器\r\n- 🔒 **类型安全**：variant、optional、expected、enum class\r\n- ⚡ **函数式**：function、lambda、ranges、invoke\r\n- 🔗 **并发**：atomic、mutex、memory_order、无锁\r\n\r\n### 📊 难度分级\r\n\r\n- 🟢 **beginner** - 入门级，适合初学者\r\n- 🟡 **intermediate** - 中级，需要一定基础\r\n- 🔴 **advanced** - 高级，深入探讨\r\n\r\n### 💻 完整代码示例\r\n\r\n- **160+ 代码文件** - 所有示例代码独立可编译\r\n- **44 个 CMake 项目** - 开箱即用的构建配置\r\n- **133 个 Snippets 引用** - 文档与代码同步更新\r\n\r\n代码位于 [`codes_and_assets/examples/`](./codes_and_assets/examples/)，按章节组织：\r\n\r\n```\r\ncodes_and_assets/examples/\r\n├── chapter02/  # 零开销抽象\r\n├── chapter03/  # 内存与对象管理\r\n├── chapter05/  # 内存管理策略\r\n├── chapter06/  # RAII与智能指针\r\n├── chapter07/  # 容器与数据结构\r\n├── chapter08/  # 类型安全\r\n├── chapter09/  # 函数式特性\r\n└── chapter10/  # 并发与原子\r\n```\r\n\r\n### 🔍 智能导航\r\n\r\n- 自动上一篇/下一篇导航\r\n- 相关文章推荐\r\n- 前置知识提示\r\n- 预计阅读时间\r\n\r\n---\r\n\r\n### 🔨 计划中\r\n\r\n以下内容仍在持续完善中：\r\n\r\n下一步，我们将会进行的——\r\n- 📌 上位机现代C++特性体验与代码实战（完善中）\r\n- 📌 使用基于C++的STM32开发与实战指南（开发中），\r\n- 📌 对于手头没有STM32的朋友，提供Docker(我了解到有Renode这个东西，有空试一下)\r\n\r\n---\r\n\r\n## 🛠️ 开发工具\r\n\r\n本项目提供了一套完整的开发工具链，便于贡献者参与：\r\n\r\n```bash\r\n# 初始化开发环境\r\nbash scripts/mkdoc_setup_local_dependency.sh\r\n\r\n# 本地预览\r\nbash scripts/local_preview.sh\r\n\r\n# 安装 pre-commit hooks（可选）\r\nbash scripts/setup_precommit.sh\r\n\r\n# 验证文章元数据\r\npython3 scripts/validate_frontmatter.py\r\n\r\n# 检查链接有效性\r\npython3 scripts/check_links.py\r\n\r\n# 查看统计信息\r\npython3 scripts/analyze_frontmatter.py\r\n```\r\n\r\n### 脚本说明\r\n\r\n| 脚本 | 功能 |\r\n|------|------|\r\n| `mkdoc_setup_local_dependency.sh` | 安装 MkDocs 依赖 |\r\n| `local_preview.sh` | 启动本地预览服务器 |\r\n| `setup_precommit.sh` | 安装 pre-commit hooks |\r\n| `validate_frontmatter.py` | 验证文章 frontmatter |\r\n| `check_links.py` | 检查内部链接 |\r\n| `analyze_frontmatter.py` | 分析教程统计信息 |\r\n\r\n---\r\n\r\n## 📌 Issue清单\r\n\r\n| ID | Title | Status | Description |\r\n|----|------|--------|------------|\r\n| #1 | expected 实现问题 | 🟡 推送处理等待反馈 | union + std::string 析构问题 |\r\n\r\n\r\n## 🤝 贡献指南\r\n\r\n我们欢迎任何形式的贡献！\r\n\r\n### 如何贡献\r\n\r\n1. Fork 本仓库\r\n2. 创建特性分支 (`git switch -c feature/AmazingFeature`)\r\n3. 提交更改 (`git commit -m 'Add some AmazingFeature'`)\r\n4. 推送到分支 (`git push origin feature/AmazingFeature`)\r\n5. 开启 Pull Request\r\n\r\n(PS，如果您遇到了问题，欢迎随时联系工作室邮箱！)\r\n\r\n### 贡献方式\r\n\r\n嘿！我知道光顾仓库的大佬们有点子的，如果您——\r\n- 📝 修正错别字和语法错误\r\n- 💡 提出改进建议\r\n- 🔧 提交代码改进\r\n- 📖 完善文档\r\n- 🐛 报告 Bug\r\n\r\n欢迎速速PR！在这里 [GitHub Issues](https://github.com/Awesome-Embedded-Learning-Studio/Tutorial_AwesomeModernCPP/issues) 中提交问题。\r\n\r\n---\r\n\r\n## 🙏 致谢\r\n\r\n本项目参考了以下优秀资源：\r\n\r\n- [modern-cpp-tutorial](https://github.com/changkun/modern-cpp-tutorial) - 现代C++教程\r\n- [CPlusPlusThings](https://github.com/Light-City/CPlusPlusThings) - C++ 那些事\r\n- [CppCon](https://www.youtube.com/user/CppCon) - C++ 会议演讲\r\n- [C++ Reference](https://en.cppreference.com/) - C++ 在线参考文档\r\n\r\n---\r\n\r\n## 📮 联系方式\r\n\r\n- **GitHub Issues**：[提交问题](https://github.com/Awesome-Embedded-Learning-Studio/Tutorial_AwesomeModernCPP/issues)\r\n- **Email**：725610365@qq.com\r\n\r\n---\r\n\r\n## 📜 许可证\r\n\r\n本项目采用 [MIT License](./LICENSE) 开源协议。\r\n\r\n---\r\n\r\n\u003cp align=\"center\"\u003e\r\n  \u003cb\u003e让嵌入式开发更现代、更高效、更优雅\u003c/b\u003e\u003cbr\u003e\r\n  用 C++ 重新定义嵌入式编程体验\r\n\u003c/p\u003e\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/awesome-embedded-learning-studio.github.io%2FTutorial_AwesomeModernCPP%2F","html_url":"https://awesome.ecosyste.ms/projects/awesome-embedded-learning-studio.github.io%2FTutorial_AwesomeModernCPP%2F","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/awesome-embedded-learning-studio.github.io%2FTutorial_AwesomeModernCPP%2F/lists"}