main.cpp如何知道包括标头的源文件?

时间:2019-09-02 02:08:58

标签: c++ preprocessor

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

我了解#include HeaderName.h能够包含类声明,因为我们告诉main.cpp包含它。但是,程序没有被告知要从HeaderSource.cpp中获取类和函数的定义,而是在头文件中也不在main.cpp中。 那么,它怎么知道声明的类的定义在那里?

1 个答案:

答案 0 :(得分:4)

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

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

This问题的答案非常详细地介绍了它如何用于x86 ELF文件。重要的是要知道此过程将有所不同,并且在不同的系统上将以不同的方式工作。