C++ 中的 header 文件如何允许更快的编译?

How do header files in C++ allow for faster compilation?

我理解在 C++ 中使用 header 文件的目的是将接口与实现分开。换句话说,我们在实现文件和 header 文件之间指定了一个契约,它必须写入 header 文件内的函数签名规范,如果不这样做,抛出编译器错误。

但是,我不明白这是否会加快编译速度或只是减少开发时间?对我们的函数进行前向声明并让编译器捕获我们在定义中犯的任何错误是有意义的(例如,我们在实现文件函数中的参数数量与 header 中指定的参数数量不同) .因此,在编译时而不是 运行 时捕获这些错误肯定有助于缩短开发时间。

在 lower-level,包含我们自己的 header 文件在编译时间上有什么优势吗?

编辑:好的,如果在编译时间上没有优势,为什么我们除了接口和实现分离之外还有header个文件?

假设我们只有实现文件,没有头文件。然后,在我们必须使用特定 class/function 的地方,我们将必须包含对该文件的完整实现,这最终将最终编译完整的实现多次,最终将增加编译时间。

但是当我们只包含声明时,我们只是多次编译声明,这样成本更低。

还必须牢记,我们甚至应该只在实际需要的地方包含头文件。从来没有。

拥有头文件的其他优势: 在 dlls/libs 的情况下,我们已经编译了实现,头文件是有关库中可用的 classes/functions 详细信息的良好洞察信息来源。