全局范围与文件范围

时间:2014-01-30 00:21:32

标签: c++ scope global-variables

关于全局变量的说法是正确的:

如果声明没有static关键字:

  1. 它有file scopeexternal linkage
  2. 它有program scope,对程序中的所有文件都可见
  3. 如果使用static关键字声明:

    1. 它有global scopeinternal linkage
    2. 它有file scopeinternal linkage
    3. 全局命名空间范围如何与此相关?

      这个概念确实令人困惑,尽管我觉得我理解它是如何工作的,但是在不同的地方,他们以不同的方式称呼它,所以我不知道哪个是对的。

1 个答案:

答案 0 :(得分:1)

第一个问题的答案都不正确。

该变量确实具有extrenal链接,但只有在其中声明它才会在其他程序单元中可见。

至于第二个问题,那么变量确实会有文件范围和内部联系。

在某个显式指定的命名空间外声明的任何变量都被视为在全局命名空间中声明。具有外部或内部链接的变量可以在任何名称空间中声明,包括全局名称空间。

我们谈论的是在任何函数之外声明的变量。