关于 cpp-pro
面向 C++20 开发的技能,涵盖现代语言特性、性能调优和系统级编程,适用于构建高性能应用、嵌入式软件及底层系统的开发者。
主要功能
- 01C++20 语言特性
- 02性能与内存优化
- 03SIMD 与无锁技术
- 04系统级编程
- 05跨平台库与 SDK 开发
适用场景
- 01开发游戏引擎与仿真程序
- 02构建嵌入式或系统软件
- 03将旧版 C++ 代码现代化
- 04优化性能关键代码
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ 404kidwiz/ claude-supercode-skills --skill cpp-pro安装后在 Claude Code 中输入/cpp-pro确认已加载。
附带文件EXAMPLES.mdREFERENCE.md
详细介绍
C++ 专业能力
用途
提供专业的 C++20 编程能力,专注于现代 C++ 特性(概念、模块、Ranges、协程)、性能优化和系统级编程。擅长构建高性能应用、嵌入式系统、游戏引擎和底层系统软件,同时确保内存安全和资源利用最优。
适用场景
- 构建需要 C++ 速度的高性能应用(游戏引擎、模拟程序)
- 实现系统级软件(设备驱动程序、操作系统、嵌入式系统)
- 优化对性能要求高的代码(SIMD、缓存优化、无锁编程)
- 将遗留 C++ 代码库迁移到现代 C++20 标准
- 构建跨平台 C++ 库和 SDK
- 实现模板元编程和编译期优化
- 使用现代 C++20 特性(概念、模块、Ranges、协程)
快速入门
在以下场景调用此技能:
- 构建高性能 C++ 应用(游戏、模拟程序、交易系统)
- 系统级编程(设备驱动程序、嵌入式系统、操作系统)
- 性能优化(SIMD、缓存、无锁编程)
- 使用现代 C++20 特性(概念、模块、Ranges、协程)
- 模板元编程和编译期计算
- 跨平台库开发
以下场景请勿调用:
- Web 开发 → 使用 frontend-developer 或 backend-developer
- 脚本任务 → 使用 python-pro 或 javascript-pro
- 无性能需求的简单实用工具 → 使用合适的语言
- 移动开发 → 使用 swift-expert 或 kotlin-specialist
核心能力
C++20 现代特性
- 概念:类型约束和模板要求
- 模块:用可导入模块替代头文件
- Ranges:惰性求值算法和视图
- 协程:使用 co_await 进行异步编程
- 三路比较运算符:三路比较 <=>
- 指定初始化器:按名称初始化结构体成员
- std::format:类型安全的字符串格式化
- std::span:不转移所有权的安全数组视图
- std::jthread:支持自动 join 的线程
性能优化
- 模板元编程:编译期计算
- SIMD 编程:用于并行处理的向量指令
- 内存管理:智能指针、分配器、内存池
- 缓存感知算法:面向数据的设计模式
- 无锁编程:原子操作和内存顺序
- 编译器优化:基于性能分析的优化、链接时优化
系统编程
- 底层 I/O:文件描述符、套接字、epoll/kqueue
- 内存映射:共享内存、内存映射文件
- 进程管理:fork、exec、信号处理
- 系统调用:POSIX/Linux 系统接口
- 嵌入式系统:裸机编程、实时约束
决策框架
C++ 特性选择
C++20 Feature Decision
├─ Type constraints needed
│ └─ Use concepts instead of SFINAE
│ • Clearer error messages
│ • More readable templates
│
├─ Header file management
│ └─ Use modules for new projects
│ • Faster compilation
│ • Better encapsulation
│
├─ Data transformations
│ └─ Use ranges for lazy evaluation
│ • Composable algorithms
│ • Memory efficient
│
├─ Async operations
│ └─ Use coroutines for I/O-bound work
│ • Efficient state machines
│ • Readable async code
│
└─ Error handling
├─ Recoverable errors → std::expected
├─ Exceptional cases → exceptions
└─ Low-level code → return codes
性能优化矩阵
| 瓶颈 | 解决方案 | 复杂度 |
|---|---|---|
| CPU 密集型计算 | SIMD、并行处理 | 高 |
| 内存分配 | 内存池、分配器 | 中 |
| 缓存未命中 | 面向数据的设计 | 高 |
| 锁竞争 | 无锁数据结构 | 非常高 |
| 编译时间 | 模块、预编译头文件 | 低 |
最佳实践
现代 C++ 开发
- 优先组合而非继承:使用值语义和组合
- const 正确性:尽可能将成员函数标记为 const
- 适当使用 noexcept:将不会抛出异常的函数标记为 noexcept
- 显式优于隐式:使用 explicit 构造函数和转换运算符
- 始终使用 RAII:将所有资源封装在 RAII 对象中
性能优化
- 先分析性能再优化:使用 perf、VTune 或 Tracy
- 零规则:仅在必要时定义析构函数、复制和移动操作
- 移动语义:按值返回,并依赖移动语义
- 谨慎使用内联:交由编译器决定;关注缓存友好的数据
- 衡量缓存效率:缓存未命中往往代价更高
模板元编程
- 优先使用 Concepts,而非 SFINAE:使用 Concepts,让模板约束更清晰
- 尽可能使用 constexpr:将计算移至编译期
- 类型特征:使用 std::type_traits 进行编译期内省
- 可变参数模板:使用参数包实现灵活的函数
并发与并行
- 避免过早加锁:高争用场景可考虑无锁方案
- 理解内存顺序:显式使用 std::memory_order
- Future/Promise 模式:使用 std::future 获取异步结果
- 使用协程处理 I/O:使用 C++20 协程实现异步 I/O
- 线程池:优先使用线程池,而非创建线程
系统级编程
- 零开销抽象:编写能够高效编译的高级代码
- 显式处理错误:使用 std::expected,避免异常
- 资源管理:始终贯彻 RAII
- 平台抽象:隔离特定于平台的代码
- 测试策略:使用单元测试、模糊测试和基于属性的测试
反模式
内存管理
- 直接使用 new/delete:改用智能指针
- 手动管理资源:应用 RAII
- 悬空指针:使用所有权语义
性能
- 过早优化:先分析性能
- 虚函数调用开销:性能至关重要时使用 CRTP
- 不必要的复制:使用移动语义和引用
代码组织
- 所有内容都只放在头文件中:使用模块或适当的编译单元
- 滥用宏:使用 constexpr、模板和内联函数
- 全局状态:使用依赖注入
其他资源
- 详细技术参考:参见 REFERENCE.md
- 代码示例与模式:参见 EXAMPLES.md
评论
支持 Markdown