SuperAPI AI 工具集

loom-cpp

编程与开发

查看项目

更新于 10-18 22:15

技能介绍

该技能面向已经熟悉 C++ 的工程师,提供编写惯用、生产级 C++20/23 代码的决策规则与常见陷阱说明。资料强调:代价高昂的 C++ 错误往往能干净地编译通过,例如悬垂视图与引用、优化器可利用的未定义行为、无人持有的资源,以及相互泄漏编译标志的 CMake 目标。

工具链方面:CMake 描述构建,Ninja 或 Make 执行构建,CTest 运行测试。资料给出配置、构建、测试、格式化、静态检查与添加依赖的具体命令,并提示多配置生成器忽略 CMAKE_BUILD_TYPE、pip 安装的 cmake shim 可能遮蔽真实 CMake 套件、FetchContent 在配置阶段需要网络等注意事项。CMake 采用基于目标的写法,作用域分为 PRIVATE、PUBLIC、INTERFACE。

现代 C++ 方面:涉及 concepts 替代 SFINAE、默认三路比较、std::format/std::print、std::expected、ranges 与 views 的惰性组合及其生命周期限制、指定初始化器、consteval、std::bit_cast、推导 this、模块与特性测试宏。

所有权与 RAII:每个资源由唯一所有者对象在析构时释放;给出独享、共享、观察、非拥有访问与 C 句柄的选型表;说明 rule of zero、参数传递约定、移动构造 noexcept、moved-from 对象状态、make_shared 与 weak_ptr 的内存影响等。

生命周期:string_view 与 span 不拥有也不延长所指向对象的生命周期,资料列出多种能通过编译的悬垂写法,并说明成员与跨调用对象应持有拥有型类型、data() 非空终止、容器失效规则、按引用捕获的 lambda 悬垂、协程参数按引用悬垂,以及 GCC/Clang 相关警告与 AddressSanitizer 检测。

未定义行为与 Sanitizer:列出有符号溢出、越界、释放后使用、数据竞争、严格别名等常见来源;给出 AddressSanitizer、UndefinedBehaviorSanitizer、ThreadSanitizer、MemorySanitizer 的标志、发现的问题与注意事项;并介绍 _GLIBCXX_ASSERTIONS、libc++ 硬化模式、GCC 14 -fhardened 与 libFuzzer。

并发:涉及 std::jthread、scoped_lock、条件变量谓词等待、原子内存序、shared_ptr 的线程安全边界、std::async 的析构阻塞、函数局部静态初始化。

错误处理:异常与 std::expected/错误码的选用原则、[[nodiscard]]、noexcept、异常保证,以及异常不得跨越 C ABI 边界或线程函数。

测试:GoogleTest 与 Catch2 注册到 CTest;示范夹具、ASSERT_* 与 EXPECT_* 的差异、命名避免下划线、参数化测试、gMock 匹配器、死亡测试与 gtest_discover_tests。

适用场景为已有 C++ 代码库的工程实践与代码审查;限制在于资料假设读者已掌握 C++,未提供安装方式、收费或平台信息。