我将非常感激,如果有人能真正解释当我按下按钮 BUILD 时我的编译器究竟做了什么,并且编译器开始编译我的所有 .h 和 .cpp 文件这个过程到底是如何进行的(我在目标文件中有什么?),我为什么要问这样的问题?我试图从 Meyers 的书中了解大约 50 种特定方式的“最小化文件之间的编译依赖关系”是什么意思......(希望你知道这本书),他在那里解释了抽象基类和句柄类是什么意思,正如我的讲师向我解释的那样,我不需要包含过多的 .h 文件,仅此而已,任何有关编译过程的链接也将不胜感激,在此先感谢您的帮助
问问题
895 次
3 回答
5
在进行完整编译时,编译器会依次读取每个 .cpp 文件。对于给定的 .cpp 文件,它将读取#include
指令引用的每个文件,递归地编译代码。当它编译下一个源文件时,它将读取该#include
源文件中引用的文件。
当您进行任何更改并进行构建时,如果#include
您的 .cpp 文件中的指令引用的任何文件已更改,则 .cpp 文件将被重新编译,就像 .cpp 文件本身已更改一样。
因此,不必要#include
的指令有两个成本:首先,编译器必须在编译时读取和处理更多文件,其次,它增加了 .cpp 文件需要重新编译的机会,即使它实际使用的没有任何改变。
于 2010-09-21T12:47:00.767 回答
1
于 2010-09-21T12:49:33.877 回答
0
了解编译器如何工作的最好方法是首先了解汇编器如何工作。这里有一个不错的解释。
于 2010-09-21T12:44:18.557 回答