c++ - C++编译过程

标签 c++ compilation linkage

如果有人能够真正解释当我按下 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/

相关文章:

c++ - 使用 Qt 静态构建库时出现链接错误

c++ - 构建分数面试挑战

c++ - 冲浪特征提取

compilation - OCR Computer Science GCSE 关于编译器和解释器的错误?

c - 在翻译单元中使用 extern

c++ - 我应该总是给我的全局函数内部链接吗?

c++ - 为什么我的代码先执行后面的cout?

java - 设计扑克游戏的结构

java - 关键字是如何开发的?

parsing - 编译器: is implicit type conversion considered in parsing or semantic analysis?