2

我将非常感激,如果有人能真正解释当我按下按钮 BUILD 时我的编译器究竟做了什么,并且编译器开始编译我的所有 .h 和 .cpp 文件这个过程到底是如何进行的(我在目标文件中有什么?),我为什么要问这样的问题?我试图从 Meyers 的书中了解大约 50 种特定方式的“最小化文件之间的编译依赖关系”是什么意思......(希望你知道这本书),他在那里解释了抽象基类和句柄类是什么意思,正如我的讲师向我解释的那样,我不需要包含过多的 .h 文件,仅此而已,任何有关编译过程的链接也将不胜感激,在此先感谢您的帮助

4

3 回答 3

5

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

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

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

于 2010-09-21T12:47:00.767 回答
1

http://computer.howstuffworks.com/c2.htm 进行介绍和

http://www.tenouk.com/ModuleW.html 进行深入描述

此外,可以在 http://en.wikipedia.org/wiki/Compiler找到一些理论背景

于 2010-09-21T12:49:33.877 回答
0

了解编译器如何工作的最好方法是首先了解汇编器如何工作。这里有一个不错的解释

于 2010-09-21T12:44:18.557 回答