在名称中定义并在多个翻译单元中使用的变量的链接
Linkage of a variable defined in a namepace and used in multiple translation units
-
在 C 语言中,要在多个翻译单元中使用一个变量,我们需要确保变量具有外部链接。
同样,在C++中,如果我想在命名空间中使用在命名空间中定义的变量多个翻译单元,变量是否必须具有外部联动?如何正确使用命名空间和链接?
-
命名空间中定义的变量的默认链接是什么?
谢谢。
它的工作方式与 C 相同,除了周围有"命名空间 xyz { }",所以在你的标头中,你会有:
namespace xyz { extern int myglobal; }
在定义它的源文件中,它的存储和初始化它,你将有
namespace xyz { int myglobal = 0; }
我会说作为一个切线风格的评论,以这种方式使用全局变量在C++中真的不是很常见;通常有更好的方法来创建共享全局状态,例如静态类成员(它允许您通过使其受保护/私有并通过静态成员函数限制访问来创建访问限制)。
相关文章:
- 内联函数中具有内部链接的全局变量
- 如果包含映射的静态库与可执行文件和动态库链接,静态映射(变量)是否会被多次释放?
- 内联函数/变量的外部链接
- 包含常量变量并包含在多个文件中的标头的链接错误
- 在 Visual Studio 2010(及更高版本)中定义包含或链接路径变量的位置
- 在链接的程序集文件中,我想从 c++ 调用代码访问变量.是否可以在不触发访问冲突的情况下执行此操作?
- 在不同的翻译单元中启动全局变量(涉及链接)
- 获取 constexpr 全局变量(不是静态成员)的链接器符号
- 使用C 中的链接seam break static变量依赖关系
- 解析参数值 - 字符串和链接值(类型字符串的链接值)与(特定类型的)变量
- 在将C全局变量与C 代码链接起来的麻烦
- C 静态变量声明怪异链接器错误
- gcc 和 clang 中 constexpr 静态成员变量的链接器错误
- C :将外部链接与未命名的名称空间使用常数变量
- 静态成员函数访问静态私有变量时的链接器错误
- Xcode C++外部变量链接器错误
- 在名称中定义并在多个翻译单元中使用的变量的链接
- 会员变量是否具有外部链接
- 为什么外部链接变量可用作常量表达式
- 如何在c++中访问其他文件中的静态链接变量