You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在禁用异常支持的情况下使用yaml-cpp?

yaml-cpp-0.8.0 无异常编译适配方案

你遇到的编译错误是因为yaml-cpp默认依赖异常处理,但你的项目已禁用异常。yaml-cpp从0.7.x版本开始支持无异常模式,可通过以下配置解决:

  • 编译yaml-cpp库时启用无异常宏:

    • 若用CMake构建yaml-cpp,配置阶段添加参数:
      cmake -DYAML_CPP_NO_EXCEPTIONS=ON ..
      
    • 手动编译时,在编译选项中加入-DYAML_CPP_NO_EXCEPTIONS(GCC/Clang)或/DYAML_CPP_NO_EXCEPTIONS(MSVC)。
  • 项目代码同步定义该宏:确保你的项目编译时也开启YAML_CPP_NO_EXCEPTIONS,保证API调用逻辑一致。

启用无异常模式后,yaml-cpp的行为会调整:

  • 原本抛出异常的操作改为返回bool类型标识执行状态
  • 错误信息可通过对应对象的GetError()方法获取
  • 部分API会提供重载版本,比如需使用带错误输出参数的解析函数,而非直接返回对象的版本

你的编译错误示例:

external/yaml-cpp~override/src/scanscalar.cpp:52:11: error: cannot use 'throw' with exceptions disabled
52 | throw ParserException(INPUT.mark(), ErrorMsg::DOC_IN_SCALAR);
| ^

内容的提问来源于stack exchange,提问作者Vertexwahn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 07:28:16