代码之家  ›  专栏  ›  技术社区  ›  SoapBox

C++例外的ANTLR3C目标

  •  1
  • SoapBox  · 技术社区  · 14 年前

    我有一些经验与ANTLR 2的C++目标,但一直犹豫花费大量的时间在ANTLR 3,因为我担心异常安全。

    遗憾的是,ANTLR 3只有一个C目标,它产生的C是“C++兼容的”。 似乎包括C++异常安全,基于以下内容:

    你可以小心使用[例外情况], 但正如你指出的,你必须 小心记忆。运行时 跟踪它所有的正常内存 分配,只要您关闭 正确的“课程”你应该 一般都可以。但是,你应该 确保引发异常 不绕过正常规则清除 向上,例如重置错误和 回溯标记等。

    ( ANTLR-interest, circa 2009 )

    有没有人使用ANTLR C目标(高级)C++的经验?是否可以安全地抛出异常?为了安全起见,我必须写什么额外的代码(如果有的话)?

    1 回复  |  直到 12 年前
        1
  •  0
  •   Calvin1602    14 年前

    我没有任何Antlr经验(遗憾的是…),但是没有办法让C代码工作在异常情况下。我建议您使用更有效的C++,项目9:“使用析构函数来防止资源泄漏”。

    其思想是,如果在清理过程中引发异常,那么您就没有关于已经删除的内容()ed、不存在的内容以及您的软件的信息。 泄漏内存。如果您使用auto-ptr/scroped-ptr,您不必担心这个问题,因为编译器会自己处理它。

    但是这个习语是C++的,C并没有考虑到例外。