C ++中的编译过程

时间:2010-09-21 12:40:35

标签: c++ compilation linkage

我将非常感激,如果有人能够解释当我按下BUILD按钮时我的编译器究竟做了什么,并且编译器开始编译所有我的.h和.cpp文件这个过程到底是怎么回事(我有什么在目标文件里面?),为什么我会问这样的问题?我试图理解“最小化文件之间的编译依赖关系”是什么意思,来自Meyers的书约有50种具体方式...(希望你知道这本书),在那里他解释了它是什么意思抽象基类和句柄类,正如我的讲师解释我的那样,我不需要包含过多的.h文件,所有这些,关于编译过程的任何链接都将受到赞赏,提前感谢任何帮助

3 个答案:

答案 0 :(得分:5)

进行完全编译时,编译器将依次读取每个.cpp文件。对于给定的.cpp文件,它将读取#include指令引用的每个文件,递归地编译代码。当它编译下一个源文件时,它将读取该源文件中#include引用的文件。

当您进行任何更改并进行构建时,如果.cpp文件中#include指令引用的任何文件已更改,则.cpp文件将被重新编译,就像.cpp文件一样本身已经改变了。

不必要的#include指令因此有两个成本:首先编译器必须在编译时读取和处理更多文件,其次它增加了.cpp文件需要重新编译的可能性,即使它实际使用的任何内容都没有改变

答案 1 :(得分:1)

答案 2 :(得分:0)

了解编译器如何工作的最佳方法是首先了解汇编程序的工作原理。有decent explanation here