假设我有一个头文件Resources.h
,其中定义了这 5 个结构:
const IColor COLOR_BLACK(255, 0, 0, 0);
const IColor COLOR_GRAY(255, 127, 127, 127);
const IColor COLOR_WHITE(255, 255, 255, 255);
const IColor COLOR_RED(255, 255, 0, 0);
const IColor COLOR_GREEN(255, 0, 255, 0);
使用const
(static
默认情况下 in C++
, 所以internal linkage
) 它们“驻留在”翻译单元的范围内。
现在,假设我将这些文件 10 次包含到我的应用程序中(来自 10 个不同的.cpp
)。当我编译时,会创建一个目标文件,并且(稍后)链接器会将所有这些目标文件收集在一起,形成一个唯一的机器可运行代码。
这是否意味着当我run
编写程序时,它会在内存中分配 10 次以上的每个结构?即 10x5 结构?
因此,即使稍后将它们链接在一起,它们对于翻译单元也是分开的?或者链接器足够聪明,可以将它们收敛到内存中的唯一分配?
不确定我是否正确完成了这些步骤。我对 C++ 很感兴趣。