【问题标题】:global scope vs file scope全局范围与文件范围
【发布时间】:2014-02-22 02:36:46
【问题描述】:

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

如果声明时不带static关键字:

  1. 它有file scope 和external linkage 或
  2. 它有program scope 并且对程序中的所有文件可见

如果用static关键字声明:

  1. 它有global scope 和internal linkage 或
  2. 它有file scope 和internal linkage

全局命名空间范围与此有何关联?

虽然我认为我理解它的工作原理,但这些概念确实令人困惑,但在不同的地方他们以不同的方式称呼它,所以我不知道哪个是正确的。

【问题讨论】:

    标签: c++ scope global-variables


    【解决方案1】:

    第一个问题的答案都是错误的。

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

    至于第二个问题,那么变量确实将具有文件范围和内部链接。

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

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

    【讨论】:

    • 对于第一个问题,第一个答案:我的意思是它的文件范围为but,它可以是来自其他翻译单元的referred to,方法是将其声明为extern。因此,在使用文件和全局范围的概念时会出现混淆。说文件范围和外部链接或全局范围是否正确,如果我们想从其他翻译单元引用它,我们声明它以便我们可以使用它?
    • 可以说一个变量具有全局作用域。但同时它可以在任何命名空间中声明,
    猜你喜欢
    • 1970-01-01
    • 2019-08-08
    • 2015-12-02
    • 1970-01-01
    • 2011-03-17
    • 2012-05-03
    • 2010-11-14
    • 2015-09-27
    相关资源
    最近更新 更多