我可以 extern 整个命名空间吗?

Can I extern the entire namespace?

有没有方法用extern修饰符声明命名空间,使命名空间的全部内容都被外部链接?

你好像问了两个问题。一个关于外部链接,一个关于 extern 说明符。


关于联动,其实不需要这样的语法。

外部链接已经是命名空间范围内的默认设置,无论是在全局命名空间还是其他命名空间中,const non-template non-inline 变量和匿名联合成员除外。 (https://en.cppreference.com/w/cpp/language/storage_duration#internal_linkage)

所以反过来说,使命名空间中的所有名称都具有内部链接的语法更可能是必需的,这对于未命名的命名空间是可能的

namespace {
    //...
}

其中所有声明的名称都有内部链接。


关于 extern 说明符用于将变量定义仅转换为名称空间范围内的声明或显式为其提供外部链接,我不知道将其应用于整个名称空间的任何语法。您必须在每个变量上明确指定它。