繁体   English   中英

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

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

  1. 在C语言中,要在多个翻译单元中使用变量,我们需要确保该变量具有外部链接。

    同样,在C ++中,如果我希望在命名空间中定义的变量可以在多个转换单元中使用,那么该变量是否必须具有外部链接? 如何正确使用命名空间和链接?

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

谢谢。

它的工作原理与C相同,不同之处在于它周围带有'namespace xyz {}',因此在标头中,您将拥有:

namespace xyz { extern int myglobal; }

在定义它的源文件中,对其进行存储和初始化,您将拥有

namespace xyz { int myglobal = 0; }

作为切向样式注释,我将说以这种方式使用全局变量实际上在C ++中并不常见。 通常,有更好的方法来创建共享的全局状态,例如静态类成员(允许您通过将其设置为受保护/私有并通过静态成员函数限制访问来创建访问限制)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM