2016-09-06 49 views
7

例如:正常的編譯器錯誤和致命的編譯器錯誤有什麼區別?

普通編譯器錯誤

C:\Documents and Settings\admin\Desktop\mystermini\main.cpp(1066) : error C2065: 'break_me' : undeclared identifier 

致命錯誤

C:\Documents and Settings\admin\Desktop\mystermini\main.cpp(1050) : fatal error C1016: #if[n]def expected an identifier 
+0

http://stackoverflow.com/a/25402049/6313992 –

+0

發生致命錯誤後,編譯器無法繼續處理剩餘的輸入並不得不停止。 – Elijan9

+0

@TomaszPlaskota:是的,重複它! –

回答

9

一個致命錯誤可能會立即停止該翻譯單元的彙編。

編譯器可能會在錯誤之後繼續編譯,以便向您顯示更全面的問題列表。

雖然在你的情況下,似乎預處理器已發出致命錯誤。也許這只是編譯器編寫者的心情。

6

的區別是這樣的:

  • 在正常的錯誤,編譯器可以繼續解析,它只是一個局部問題(例如未聲明的變量,但是編譯器知道如何從中恢復一些編譯器在這個過程中,添加缺少的;等)
  • 對於致命錯誤,編譯器(或預處理器)由於結構錯誤(丟失上下文)而不可能知道如何繼續(就像是「丟失」)

這解釋了有時你修復了所有的編譯錯誤,並且出現了新的錯誤。