嵌入式 C++ 编译约束

本文对应 成长路径 中优先级:在资源受限目标上 裁剪 C++ 运行时,避免无意引入 异常 / RTTI 开销。


常见编译选项

选项作用
-fno-exceptions禁用 C++ 异常(需代码无 throw)
-fno-rtti禁用 dynamic_cast / typeid
-ffunction-sections -fdata-sections + --gc-sections链接时剔除未用段
-Os体积优化

异常替代

  • std::optional / 错误码 返回失败。
  • 嵌入式框架(如部分 AUTOSAR 风格)禁止异常。

STL 注意

  • iostream 体积大,日志用 printf 或轻量库。
  • 容器选型:固定容量 std::array、自定义 arena allocator

与 DPDK

DPDK 多为 C API;C++ 封装见 C++ 封装 DPDK 数据面


延伸阅读