2010-12-16 80 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)並查看錯誤是否更清晰。