首页 > 解决方案 > 为什么我要编译 2 个 C/++ 源文件而不是使用头文件?

问题描述

我最近开始学习 makefile,我正在观看的视频包括两个源文件和一个头文件的编译。在头文件中定义了一个类,该类包含在两个源文件中。该类的方法在一个源文件中定义,并在第二个源文件(main.cpp)中调用。为什么我需要有 2 个源文件 (.c/.cpp)?

标签: c++cmakefileheader-files

解决方案


每次对头文件进行任何更改时,都必须重新编译包含它的每个文件,但如果更改源文件,则只需重新编译该源文件。

在处理非平凡大小的项目时,这可以显着减少编译时间。由于您的大部分工作通常是在实现方面完成的,因此对头文件的修改不如对源文件的修改频繁,因此大多数重新编译都将本地化。

出于可导航性的原因,您还需要将源代码拆分为单独的文件。处理一个超过 2000 行的源文件比处理 10 个大约 200 行的文件要麻烦得多。当版本控制启动并且您在团队中工作时,这一点更为重要,因为这样可以减少合并冲突。

想象一下,如果 Chrome 只是一个单一的.cpp文件。即使对它进行最微不足道的更改也需要重新编译整个东西,即使在装备精良的机器上也需要 6-12 个小时。相比之下,编译单个源文件并重新链接只需几分钟。

在实践中,通常每个源文件都有一个类和相应的头文件。函数在逻辑上组合成集合,每个集合在它们自己的一对头文件/源文件中。


推荐阅读