【问题标题】:Compiler for better template support更好的模板支持编译器
【发布时间】:2011-04-22 05:34:54
【问题描述】:

以下哪个 C++ 编译器更适合关注 C++ 模板(+ 发出的错误消息)?

  • g++
  • 叮当
  • 喜剧
  • cl.exe (MSVC++)
  • icl.exe(英特尔 C++)

【问题讨论】:

  • Comeau 和英特尔 C++ 在大多数情况下应该发出相同的语法和语义错误诊断消息,因为它们都使用 EDG 前端。
  • 不同的人对报告错误的方式有不同的偏好。一些人对与一个模板错误相关的 20 行感到恐慌,或者希望尽可能将类型简化为其 typedef 名称,而另一些人则喜欢获得最大的细节,以便他们可以在实例化链上上下工作并了解问题的其他方面。没有适合所有人的“更好”——这取决于您的技能水平以及您必须编写和使用的代码的复杂性。
  • 在所有情况下,这些编译器都不会发出比其他所有编译器更好的诊断消息。当然,您可以选择某些示例并说“看看这个编译器给出的这个漂亮、清晰、可操作的消息,看看所有其他编译器给出的废话错误消息”,但我知道我已经看到了来自每一个让我困惑的编译器。能够使用多个编译器编译您的代码是一件好事,这样当您确实遇到令人费解的错误消息时,您可以看到另一个编译器要说什么。
  • @James:完全同意你最后的评论。 :-)

标签: c++ templates compiler-construction compiler-errors


【解决方案1】:

我更喜欢 Comeau,因为它符合标准。 Clang are more useful 发出的错误消息比 g++ 发出的错误消息。

MSVC++ 的编译器坏了[没有两阶段名称查找]。

【讨论】:

    【解决方案2】:

    在我看来,Clang 和 Comeau 更好。 Clang 提供了良好的诊断信息。

    请参阅 Clang 的这些 Expressive Diagnostics 的几个示例。

    我更喜欢 Clang,因为它是免费的(不像 Comeau)。

    【讨论】:

      猜你喜欢
      • 2021-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-01
      相关资源
      最近更新 更多