c++ - 静态、全局和多个翻译单元

标签 c++ compiler-construction static global

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

1) 你究竟是如何得到多个翻译单元的?当然,所有源文件和头文件都会“连接”在一起,否则您最终会得到不属于该“程序”的代码调用代码。翻译单元不就是一个程序吗?

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

3) 与问题 2 类似,全局变量是否在多个翻译单元之间共享(有点像我暗示它们是单独的程序 - 只是一起编译???)还是全局变量仍然起作用......全局翻译单位?

最佳答案

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

2) 链接器将消除拷贝。

3) 是的,见 2)

关于c++ - 静态、全局和多个翻译单元,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15259131/

相关文章:

c++ - 如何修复此警告 : conversion to 'unsigned char' from 'int' may alter its value

Java静态方法变量在编译时解析,在运行时加载?

java - 如何从各种类访问公共(public)静态 ArrayList?

c++ - 使用getline函数解析c++中的字符串

optimization - -ffinite-math-only 促进了哪些优化?

c++ - 我应该将 malloc() 用于链表吗?

c - 编程语言中的术语 "context"以及加载和更新如何影响上下文?

static - 没有名为 static 的模块

c++ - 我可以在输入后去掉行尾字符吗?

c++ - 如何在自定义 rxcpp 运算符上调用 on_error