静态,全局和多个翻译单元

use*_*112 4 c++ compiler-construction static global

这包括三个相关的问题:

1)您最终如何使用多个翻译单元?当然所有的源文件和头文件都会"加入"在一起,否则你最终会得到代码调用代码而不是那个"程序"的一部分.翻译单位不是一个程序吗?

2)静态对象/类如何处理多个翻译单元?如果不同翻译单元中的多个源文件包含一个标题,该标题会创建一个对象(具有静态数据成员),那么每个翻译单元会有一个单独的静态数据成员吗?

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

Dan*_*rey 7

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

2)链接器将删除副本.

3)是的,见2)