我目前的理解是这样的。如果我错了,请纠正我。当我将 C++ 库(例如开源项目)包含到我的项目中时,我必须包含 .h 文件,以便编译器知道所包含库的接口。包含库的编译代码然后由链接器链接。
但是现在在编译期间,包含的头文件需要另一个依赖项。如果我将包含此依赖项的头文件,在包含每个依赖项之前,这是否会变成一些递归循环?为什么需要它?这不应该是链接器的关注点吗?编译后的库包含依赖项。
我使用 Xcode 9.4 偶然发现了这个项目。
编译器将代码翻译成机器语言。然后使用链接器将所述代码与其他机器代码串在一起。如果感到困惑,请谷歌更多关于我写的内容;这是一种简化,缺少更精细的细节。
#include <cstdint>
例如,当您键入时,预处理器(另一个单独的程序)会执行模式替换(如果您愿意),#include <cstdint>
并用cstdint.hh
文件的全部内容替换该行。替代发生在机器代码的翻译过程甚至开始之前。
通常,这些#include <...>
文件都是精心编写的,这样你就不需要去追逐其他 #include
. 但是,这不是保证。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句