这包括三个相互关联的问题:

1)您最终如何获得多个翻译单元?当然,所有源文件和头文件都将“连接”在一起,因为否则,您将得到不属于该“程序”一部分的代码调用代码。翻译单元和程序不一样吗?

2)静态对象/类如何针对多个翻译单元工作?如果不同翻译单元中的几个源文件包含一个可以创建对象的 header (具有静态数据成员),那么每个翻译单元是否会有单独的静态数据成员?

3)与问题2相似,全局变量是否在多个翻译单元之间共享(有点像我的建议,它们是单独的程序,只是一起编译???)还是全局变量仍在所有翻译单元中起作用?

最佳答案

1)每个源文件及其包含的头文件都称为翻译单元。它被编译成目标文件。然后,链接器最终将所有目标文件连接到最终的可执行文件中。 (简化,但是给您一个基本的想法)

2)链接器将删除副本。

3)是,请参阅2)

07-24 14:27