有时当gcc输出错误时,会按照-E,-S和-c等选项分解预处理,编译,汇编,链接的每个阶段的过程。这是an example。
我只是想知道在这四个阶段中每个阶段会发生什么类型的错误,如果在其中一个阶段发生了一个错误而在之前的阶段没有发生错误,这将如何指导您找出错误原因并纠正错误它?
答案 0 :(得分:1)
如果我记得每个术语的含义:
预处理错误:`abcdefg'不是有效的关键字,因此预处理将失败:
#abcdefg
编译错误:`fight!now'不是有效的标识符,因此编译将失败:
int fight!now;
链接错误:`myfunc'由never defined声明:
extern int myfunc();
int main() {
return myfunc();
}
您知道,知道工具链检测到错误的位置有助于了解它可能出现的错误类型。但是,工具链发出的消息通常足以理解错误所在的位置。当然,它需要用于传递参数-Wall甚至-Wextra以获得更多关于可能出错的警告。