2010-12-16 77 views
9

我花了很多时间使用Microsoft编译器cl,发现它在编译消息(如C1234,C5432等)中给出的错误代码可能非常有用。当我遇到一个我不熟悉的错误时,我可以很容易地在MSDN上查找它,并对它的含义进行更详细的解释。gcc错误消息库

现在我几乎全部使用gcc,并且发现我错过了该功能。当我在gcc中出现错误时,我似乎花了很多时间搜索错误文本以获取有关它的信息。是否有一些gcc错误消息的存储库,其中每个更详细地解释?

+0

重复:http://stackoverflow.com/questions/1043379/gnu-c-error-messages/ – 2010-12-17 03:22:45

回答

0

我发现使用谷歌搜索确切的错误消息(省略了变化的东西,如变量/函数名称)可以得到相当不错的结果。它有时有助于将全部或部分错误消息放在引号中,以便将它看作是一个句子而不是一组词汇。

This page解释了一些更基本的错误消息。

如果您遇到一些特别令人费解的事情,您无法解决问题,您当然可以始终询问SO。

+0

我已经做了所有这一切。 – Mike 2010-12-16 18:23:12

+0

和其他的一样,有一条学习曲线。随着时间的流逝,你会发现绝大多数错误是直截了当的,而且那些人必须看起来很少见(最棘手的是那些错误不是看起来那样的人)。 – NPE 2010-12-16 19:20:22

+0

但是,这正是重点。当我遇到一个我从未见过的错误时,它使用了一些神秘的措辞,如果能够快速查找错误而不想知道信息来源的可靠程度,那将是一件很好的事情。像这样的许多错误都与C/C++标准的特定部分有关;得到一个参考哪里会很好。问题的答案是否,没有存储库或引用,或者你只是不知道其中的一个? – Mike 2010-12-17 00:26:45

4

我不知道任何完整的信息库,包括完整的解释,但对于自己:

  • 随着时间的推移,你会学到什么特别的错误消息的意思(特别是在“你错过了一个;条款但编译器不能告诉“)。
  • 使用引号(例如,不包括函数名称)搜索错误消息的常量部分时,在前3-5次匹配中经常给出非常好的解释。
  • 模板相关的错误通常是最糟糕的。对于那些,编译器给你两个行号:模板代码存在的地方,以及它被实例化的地方。在上下文中查看这两行代码通常可以使事情变得更加清晰(“为什么使用THAT超载?”)。有时候最简单的方法是用简单的类型创建一个测试程序来确定编译器告诉你的内容(因为在错误消息中显示typedef不会有帮助)。
  • 如果它是一小段代码,请尝试使用其他编译器(例如Comeau online)并查看错误是否更清晰。