2016-09-06 58 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

的区别是这样的:

  • 在正常的错误,编译器可以继续解析,它只是一个局部问题(例如未声明的变量,但是编译器知道如何从中恢复一些编译器在这个过程中,添加缺少的;等)
  • 对于致命错误,编译器(或预处理器)由于结构错误(丢失上下文)而不可能知道如何继续(就像是“丢失”)

这解释了有时你修复了所有的编译错误,并且出现了新的错误。