C++中命名空间中静态函数的链接

5
在非全局名称空间中声明的静态函数与命名空间的链接方式是什么?
示例:
namespace foo {
  ...
  static void bar(int a) { }
}

这与在全局命名空间范围内声明的静态方法有什么不同吗?能否指出标准中规定这一点的位置?
谢谢!
1个回答

9

static在命名空间级别的函数中使用时意味着内部链接

具体引用来自于第3.5节程序链接,第3段:

如果一个具有命名空间作用域(3.3.6)的名称是:

  • 显式声明为静态变量、函数或函数模板;或者[...]

则该名称具有内部链接。


如果bar是在文件作用域声明的,那么这相当于在默认命名空间中声明,所以对于C ++来说,文件作用域就是命名空间作用域? - user220878
1
@anjruu:在C++中,文件作用域不是一个概念,但任何不在其他作用域中的内容都在全局命名空间的作用域中,因此它处于命名空间作用域。 - David Rodríguez - dribeas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接