首页 > 后端开发 > C++ > 使用带有'auto”变量的 Spirit 解析器时如何避免段错误?

使用带有'auto”变量的 Spirit 解析器时如何避免段错误?

Mary-Kate Olsen
发布: 2024-12-05 21:53:15
原创
1026 人浏览过

How Can I Avoid Segfaults When Using Spirit Parsers with `auto` Variables?

在 Spirit 中将解析器分配给自动变量时避免段错误

Spirit 解析器本质上并不是为与 Spirit V2 中的自动变量一起使用而设计的。这是由于底层 Proto 表达式模板维护对临时变量的引用。

在内联 qi::parse() 表达式中将 auto 与解析器结合使用会导致成功解析。但是,将解析器分配给 auto 变量,然后在 qi::parse() 中使用它会导致段错误。

要规避此限制,请考虑以下替代方案:

  • qi::copy():可在 Spirit V2 的 trunk 中使用(boost_1_55_0 及更高版本), qi::copy() 可以创建解析器的深层复制。
  • boost::proto::deep_copy:该函数可以实现 Proto 表达式的深层复制。
  • BOOST_SPIRIT_AUTO:这个宏在 Spirit V2 的讨论论坛中引入,提供了一种使用自动变量中的解析器。

有关更多详细信息和示例,请参阅以下资源:

  • [与优化相关的 Spirit V2 qi bug level](https://stackoverflow.com/questions/12011946/spirit-v2-qi-bug-linked-with-optimization-level)
  • [auto 变量中的 Spirit X3 解析器](https:// stackoverflow.com/questions/27979404/spirit-x3-parser-within-auto-variable)

以上是使用带有'auto”变量的 Spirit 解析器时如何避免段错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板