为什么我不需要在头文件中包含library.cpp?

Mig*_*uiz 3 c++ header libraries

我对图书馆有疑问.当我写一个库时,我有2个文件:library.hlibrary.cpp.

第一个包含函数的原型,第二个包含定义.好吧,在library.cpp我包含中#include "library.h",所以它们以一种方式连接,但是标题会发生什么?为什么我不必#include "library.cpp"在标题中写?

当我在主文件中使用库时,我写了#include "library.h",其中包括原型,但编译器如何知道定义的位置?

Der*_*rek 12

简要解释:

(1)您的library.cpp文件被发送到预处理器.

(2)预处理器读取该行#include "library.h"并前往并找到该文件library.h.

(3)library.h字面上的内容被复制到library.cpp文件中.

(4)library.cpp文件被编译并与主文件链接.

因此,标题中的所有"原型"都被复制到实现文件的顶部..cpp文件被编译和链接.头文件本身不会被编译 - 它们的内容被复制到.cpp文件中.