在名称中定义并在多个翻译单元中使用的变量的链接

Linkage of a variable defined in a namepace and used in multiple translation units

本文关键字:链接 变量 单元 定义 翻译      更新时间:2023-10-16
  1. 在 C 语言中,要在多个翻译单元中使用一个变量,我们需要确保变量具有外部链接。

    同样,在C++中,如果我想在命名空间中使用在命名空间中定义的变量多个翻译单元,变量是否必须具有外部联动?如何正确使用命名空间和链接?

  2. 命名空间中定义的变量的默认链接是什么?

谢谢。

它的工作方式与 C 相同,除了周围有"命名空间 xyz { }",所以在你的标头中,你会有:

namespace xyz { extern int myglobal; }

在定义它的源文件中,它的存储和初始化它,你将有

namespace xyz { int myglobal = 0; }

我会说作为一个切线风格的评论,以这种方式使用全局变量在C++中真的不是很常见;通常有更好的方法来创建共享全局状态,例如静态类成员(它允许您通过使其受保护/私有并通过静态成员函数限制访问来创建访问限制)。