我将非常感激,如果有人能够解释当我按下BUILD按钮时我的编译器究竟做了什么,并且编译器开始编译所有我的.h和.cpp文件这个过程到底是怎么回事(我有什么在目标文件里面?),为什么我会问这样的问题?我试图理解“最小化文件之间的编译依赖关系”是什么意思,来自Meyers的书约有50种具体方式...(希望你知道这本书),在那里他解释了它是什么意思抽象基类和句柄类,正如我的讲师解释我的那样,我不需要包含过多的.h文件,所有这些,关于编译过程的任何链接都将受到赞赏,提前感谢任何帮助
答案 0 :(得分:5)
进行完全编译时,编译器将依次读取每个.cpp文件。对于给定的.cpp文件,它将读取#include
指令引用的每个文件,递归地编译代码。当它编译下一个源文件时,它将读取该源文件中#include
引用的文件。
当您进行任何更改并进行构建时,如果.cpp文件中#include
指令引用的任何文件已更改,则.cpp文件将被重新编译,就像.cpp文件一样本身已经改变了。
不必要的#include
指令因此有两个成本:首先编译器必须在编译时读取和处理更多文件,其次它增加了.cpp文件需要重新编译的可能性,即使它实际使用的任何内容都没有改变
答案 1 :(得分:1)
见
http://computer.howstuffworks.com/c2.htm 介绍和
http://www.tenouk.com/ModuleW.html 深入描述
此外,一些理论背景可以在 http://en.wikipedia.org/wiki/Compiler
答案 2 :(得分:0)
了解编译器如何工作的最佳方法是首先了解汇编程序的工作原理。有decent explanation here。