C/C++ 项目中有多个程序的话如何运行?文件之间由什么联系,有什么联系?

不知道各位有没有看过xtrack码表的代码,反正这是我见过第一个这么多个源文件组成的代码(刚学编程不久)
如图,有那么多源文件和头文件,这还只是极小一部分:

img

无法理解为什么分成那么多个源文件之后还能运行
不同源文件之间是由什么联系起来的呢
非常感谢如果你能回答我的这个问题!

回答:文件确实非常多呀,我目前也没见过这么多文件的;C++采用的是编译的方式,会对文件进行编译,然后别的文件在使用到该文件的地方进行引入;只需要保证文件的组织方式不出现问题,即在引入的地方在编译时该模块已经被提前编译好,能够引入即可;可以参考这篇文章,介绍了简单的编译过程:https://zhuanlan.zhihu.com/p/45402323
当然,会有一些地方采用的是动态加载的方式,即在方法被调用的时候才会真正进行加载,这个在C++模板语法里面有涉及到;具体的加载流程我也没研究过。

项目中通过包含头文件的方式找到函数入口,然后经过main函数 通过函数调用来实现各个文件之间的函数功能。 程序的入口是main函数,然后经过函数接口调用,通过.h头文件找到其他文件中的函数接口

这种有多个不同的view组成的界面通常需要一个统一的调度页面(好像是叫MDIView);在这个调度页面下可以打开各个子View,使某个View具有主焦点,同时可以在各个子View之间传递数据、消息、控制。

首先头文件存储的是函数的声明,源文件存储的是函数的实现,编译器编译时会将#include展开,也就是把头文件的所有声明嵌入进源文件中。生成可执行文件可以分为两个部分——编译和链接,编译时会检查语法,会检查函数是否有没有声明,以及传参是否正确,至于该函数有没有被实现编译阶段是不管的,编译完成后会生成.o文件。链接时会将多个.o文件链接起来生成一个可执行文件,会根据函数的声明去找函数的实现。

分文件只是为了方便开发人员维护。处理文件间关系的是编译器,需要了解编译器工作的基本原理,才能知道编译器如何处理这些文件的,但这些并不重要,通常目录中 的 makefile\cmake 文件约定编译器要如何处理这些关系,我们只需了解如何使用 makefile\cmake文件就可以了。