PIMPL 的三种现代实现: 从堆分配到栈内联

PIMPL 是 C++ 中最经典的编译隔离手段,但教科书只展示了 unique_ptr 一种实现。本文对比三种 C++14 兼容的 PIMPL 实现 – Heap PIMPL、Fast PIMPL (栈内联)、函数指针表 PIMPL – 从编译隔离、运行时成本、缓存友好性三个维度量化分析,给出不同场景的选型依据。

February 17, 2026 · 6 min · 1194 words · map[name:DeguiLiu]

C11 做不到的事: 10 项 C++17 语言级不可替代能力

筛选标准: 只保留 C11 在语言层面无法实现的能力。从类型安全、编译期计算、内存安全、类型分发四个维度,逐项对比 C++17 与 C11 的语言级差异,附完整代码对比。

February 17, 2026 · 5 min · 990 words · map[name:DeguiLiu]

嵌入式 C++ 智能指针的五个陷阱与零堆分配替代方案

std::shared_ptr 和 std::weak_ptr 在桌面开发中是安全的默认选择,但在嵌入式实时系统中会引入原子引用计数开销、堆碎片化、不确定延迟和竞态条件等问题。本文从一个 weak_ptr 竞态 bug 出发,系统分析智能指针在嵌入式场景的五个根本陷阱,并展示 newosp C++17 基础设施库如何用 ObjectPool、FixedFunction、ScopeGuard 和 expected 实现零堆分配的确定性内存管理。

February 16, 2026 · 10 min · 1947 words · map[name:DeguiLiu]

嵌入式 C++17 设计模式实战: 零虚函数、零堆分配的编译期技术

传统设计模式依赖虚函数和动态分配,在嵌入式系统中代价过高。本文基于 newosp 库的真实代码,展示 8 种编译期设计模式的实现:类型擦除替代 std::function、ScopeGuard 替代虚析构、if constexpr 编译期分发、Tag Dispatch 构造控制、强类型包装、Pub/Sub 零堆回调、Visitor 直接分发、以及 CRTP 编译期 Handler 绑定。所有模式在 -fno-exceptions -fno-rtti 下可用,热路径零堆分配。

February 16, 2026 · 9 min · 1796 words · map[name:DeguiLiu]

嵌入式系统中的编译期分发: 用模板消除虚函数开销

结合 MISRA C++ 规范和 newosp 工程实践,系统阐述如何利用 C++17 模板技术实现编译期分发,在保持代码灵活性的同时消除虚函数的性能损耗。实测显示编译期分发相比回调模式有 15 倍性能提升,相比虚函数分发开销降低 95% 以上。

February 16, 2026 · 7 min · 1322 words · map[name:DeguiLiu]

C 语言设计模式实战: 策略模式与状态模式的本质差异

在没有面向对象语法的 C 语言中,策略模式和状态模式都通过函数指针表 (vtable) 模拟多态,代码结构几乎一致。本文从设计意图出发,用通用示例 (传感器滤波、通信协议状态机) 剖析二者的本质差异,并展示它们在同一系统中的协作方式。

February 16, 2026 · 7 min · 1439 words · map[name:DeguiLiu]

C 语言层次状态机框架: 从过程驱动到数据驱动的重构实践

以 state_machine 框架的重构为案例,展示如何将一个过程驱动的 C 语言状态机改造为数据驱动的层次状态机 (HSM)。涵盖转换表替代 switch-case、LCA 算法消除递归、用户缓冲区替代内部分配、守卫条件与内外转换区分等关键改造点,附完整数据结构和 API 设计。

February 16, 2026 · 7 min · 1487 words · map[name:DeguiLiu]

C 语言如何实现面向对象: Nginx 模块化架构源码解读

面向对象编程(OOP)以其强大的封装、继承和多态特性,成为构建复杂系统的关键范式。然而,在研读 Nginx 和 Linux 内核等高性能 C 语言项目源码时,可以观察到一个显著现象:尽管 C 语言原生不支持 OOP,但其设计架构中却深刻体现了面向对象的思想精髓。

February 15, 2026 · 2 min · 414 words · map[name:DeguiLiu]