【问题标题】:Linkage of a Static Function in a Namespace in C++C++ 命名空间中静态函数的链接
【发布时间】:2012-11-28 21:51:43
【问题描述】:

在非全局命名空间中声明的静态函数的链接是什么?

例子:

namespace foo {
  ...
  static void bar(int a) { }
}

这与在全局命名空间范围内声明的静态方法有什么不同吗?有人可以指出标准中的位置吗?

谢谢!

【问题讨论】:

    标签: c++ static namespaces linkage


    【解决方案1】:

    static 在命名空间级别的函数中使用时表示内部链接

    具体引用来自 3.5 Program Linkage,第 3 段:

    具有命名空间范围 (3.3.6) 的名称如果是以下名称,则具有内部链接

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

    【讨论】:

    • 所以如果 bar 是在文件范围内声明的,这算作是在默认命名空间中声明的,所以对于 C++,文件范围是命名空间范围?
    • @anjruu: 文件范围在C++中不是一个概念,但是任何不在任何其他范围内的东西都在全局命名空间的范围内,所以它在命名空间中范围。
    猜你喜欢
    • 1970-01-01
    • 2013-03-10
    • 1970-01-01
    • 2010-09-14
    • 2012-12-16
    • 2010-12-22
    • 1970-01-01
    • 2021-08-27
    相关资源
    最近更新 更多