如果有人能够真正解释当我按下 BUILD 按钮时我的编译器到底做了什么,并且编译器开始编译我所有的 .h 和 .cpp 文件,这个过程到底是如何进行的(我有什么),我将非常感激在目标文件内?),为什么我会问这样的问题?我试图理解 Meyers 书中关于 50 种具体方法的“最小化文件之间的编译依赖关系”是什么意思...(希望你了解这本书),他在那里解释了抽象基类和句柄类是什么意思,正如我的讲师向我解释的那样,我不需要包含过多的 .h 文件,仅此而已,任何有关编译过程的链接也将不胜感激,提前感谢您的帮助
最佳答案
在进行完整编译时,编译器会依次读取每个.cpp文件。对于给定的 .cpp 文件,它将递归地读取 #include 指令引用的每个文件,并编译代码。当它编译下一个源文件时,它将读取该源文件中用 #include
引用的文件。
当您进行任何更改并进行构建时,如果 .cpp 文件中的 #include
指令引用的任何文件已更改,则 .cpp 文件将被重新编译,就像.cpp 文件本身已更改。
不必要的#include
指令因此有两个成本:首先,编译器在编译时必须读取和处理更多文件,其次,它增加了您的.cpp文件需要重新编译的机会,即使什么也没有。实际用途已经改变。
关于c++ - C++编译过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3760332/