当尝试编译代码时,IDE中的致命错误和非致命错误之间的主要区别是什么?
在这两种情况下,编译器都会显示错误消息,并且不会编译程序。致命错误是编译器或链接器中未定义的编译器错误吗?
答案 0 :(得分:3)
IDE不是编译器。它通常在命令行中启动另一个程序(如GCC ...)进行编译。您的IDE只是一个美化的编辑器(在Linux上,emacs
编辑器通常比IDE更好。)
大多数编译器都没有给出致命的错误,除了编译器错误,编译时缺少资源,或者无法进一步编译源输入时:想到#include
- 不存在的头文件。
答案 1 :(得分:3)
差异通常基于编译单元(单个.cpp
文件),尽管有时在整个构建过程中。
主要区别在于致命错误会导致它放弃编译。因此,例如,如果通过包含不存在的标头而导致致命错误,则不会编译编译单元。
如果您遇到常规错误,例如使用未定义的符号或错过右括号,它将尝试为您编译文件的其余部分。这可能会发现更多错误,您可以在尝试重新编译之前一次修复这些错误。当然,其中一些可能是由前一个引起的。
没有"标准"因此,可能会考虑缺少标题"致命"因为很可能在没有标题的情况下会有大量未定义的类型等等,所以它被认为是#34;不值得"报告他们。不同的编译器可以判断错误不是致命错误,无论如何都要报告它们。
答案 2 :(得分:0)
逻辑错误(例如,当块中的两个大括号都被省略时)在执行时会产生影响。 致命的逻辑错误会导致应用程序失败并过早终止。 非致命的逻辑错误允许应用继续执行,但会导致它产生错误的结果。