0
在C中,使用在多个翻译单位可变的变量,我们需要 确保变量有外部链接。联动在namepace定义,并在多个翻译单位
同样,在C++中,如果我想要在名称空间中定义的变量用于多个翻译单元,该变量是否必须具有外部 链接?我应该如何正确使用名称空间和连接?
在命名空间中定义的变量的默认链接是什么?
谢谢。
在C中,使用在多个翻译单位可变的变量,我们需要 确保变量有外部链接。联动在namepace定义,并在多个翻译单位
同样,在C++中,如果我想要在名称空间中定义的变量用于多个翻译单元,该变量是否必须具有外部 链接?我应该如何正确使用名称空间和连接?
在命名空间中定义的变量的默认链接是什么?
谢谢。
它的工作原理相同,C,除非“命名空间XYZ {}”周围,所以在你的头,你必须:
namespace xyz { extern int myglobal; }
,并在源文件中,可以定义它,其存储和初始化它,你将有
namespace xyz { int myglobal = 0; }
我会说作为一个切线式的评论,以这种方式使用全局真的不是很常见的C++;通常有更好的方法来创建一个共享的全局状态,比如静态类成员(它允许你通过使其成为protected/private并通过静态成员函数来限制访问来创建访问限制)。
命名空间与链接直接无关。一般来说,C++在这方面的规则与C相同。 –
...除了匿名命名空间 – davidbak