2017-10-07 27 views
0
  1. 在C中,使用在多个翻译单位可变的变量,我们需要 确保变量有外部链接。联动在namepace定义,并在多个翻译单位

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

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

谢谢。

+1

命名空间与链接直接无关。一般来说,C++在这方面的规则与C相同。 –

+0

...除了匿名命名空间 – davidbak

回答

2

它的工作原理相同,C,除非“命名空间XYZ {}”周围,所以在你的头,你必须:

namespace xyz { extern int myglobal; }

,并在源文件中,可以定义它,其存储和初始化它,你将有

namespace xyz { int myglobal = 0; }

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