这个基本stucture是一个脑死亡的新手问题,但在这里有云:的C/C++项目(头文件和cpp文件)
是什么决定了什么样的文件被包括在C/C++项目?
我的理解是,编译器以其中包含main()的文件开始,该文件将包含#include以获取包含#include到其他h文件的各种h文件,等等,直到所有内容都包含在项目。
我的问题:
什么是h文件和同名的cpp文件之间的关系?我的意思是,我当然明白,代码方面他们需要彼此,并且cpp文件总是(几乎总是?)#include的h文件,但是从编译器的角度来看,重要的是它们具有相同的名称或是这只是一个约定?我可以包含额外的cpp文件而不包含相应的h文件吗?
此外,当项目建立并链接时,它如何知道哪些cpp/h文件要构建目标文件?它是否会从其中包含“main()”的cpp文件开始,并继续执行#include,直到它具有所需的所有内容并构建所有这些内容,还是只构建用户在生成文件或IDE项目文件?
最后,当链接器最终出现并链接所有目标代码以创建一个可执行文件时,是否有特殊的顺序来排列所有内容?
任何帮助,提示,解释赞赏.. 谢谢!
--R