更好的模板支持编译器

4

考虑到C++模板(+错误消息)哪个编译器更好?

  • g++
  • clang
  • comeau
  • cl.exe(MSVC ++)
  • icl.exe(Intel C ++)

3
由于Comeau和Intel C++都使用了EDG前端,因此它们大部分情况下应该会发出相同的语法和语义错误诊断信息。 - James McNellis
5
不同的人对于错误报告方式有不同的偏好。有些人会因为收到与一个模板错误相关的20行错误信息而感到惊慌,或者希望类型简化为其typedef名称(如果可能的话),而其他人则喜欢获得最大的详细信息,以便他们可以沿着实例链上下工作,并察觉问题的其他方面。并不存在适用于每个人的单一“更好”的方法 - 这取决于你的技能水平和你需要编写和处理的代码的复杂性。 - Tony Delroy
5
在所有情况下,这些编译器都没有比其他编译器发出更好的诊断消息。当然,你可以挑选某些例子并说:“看看这个编译器给出的漂亮、清晰、可执行的消息,再看看其他编译器给出的垃圾错误消息”,但我知道我曾经看过每一个编译器的诊断信息都使我感到困惑。使用多个编译器来编译你的代码很好,因为当你遇到令人费解的错误消息时,你可以看看另一个编译器的建议。 - James McNellis
@James:完全同意你的最后一条评论。 :-) - Nawaz
2个回答

4

我更喜欢Comeau编译器,因为它符合标准。 Clang发出的错误消息比g ++发出的更有用

MSVC ++的编译器存在问题[没有两阶段名称查找]。


0
在我看来,Clang和Comeau更好。Clang提供了良好的诊断信息。
请查看这些由Clang提供的表达性诊断示例。
我更喜欢Clang,因为它是免费的(不像Comeau)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接