首页 > 解决方案 > main.cpp 如何知道包含头文件的源文件?

问题描述

我不太明白 main.cpp 如何知道使用头文件源文件中的类定义和函数定义。

我了解如何#include HeaderName.h包含类声明,因为我们告诉 main.cpp 包含它。但是,头文件和 main.cpp 中都没有告诉程序从HeaderSource.cpp. 那么,它怎么知道声明的类的定义在那里呢?

标签: c++preprocessor

解决方案


每个cpp文件单独编译;它们都是一个“翻译单元”,彼此不共享任何定义。您可以通过在 cpp 文件中定义某些内容而不是在标题中定义它来测试它;没有其他 cpp 文件会知道它。

编译生成的目标文件然后通过链接器“链接”在一起;该链接器可以看到每个目标文件,因此它知道所有函数的定义在哪里。

这个问题的答案非常详细地说明了它如何处理 x86 ELF 文件。重要的是要知道这个过程会有点不同,并且对于不同的系统会有不同的工作方式。


推荐阅读