关于全局变量的正确说法:
如果声明时没有static
关键字:
- 它有
文件作用域
和外部链接
或者 - 它具有
程序作用域
并且对程序中的所有文件可见
如果用static
关键字声明:
- 它具有
全局作用域
和内部链接
或者 - 它有
文件作用域
和内部链接
全局命名空间范围如何与此相关?
这个概念真的很令人困惑,虽然我认为我理解它是如何工作的,但在不同的地方他们以不同的方式调用它,所以我不知道哪个是正确的。
最佳答案
第一个问题的答案都不正确。
该变量确实具有外部链接,但仅当在其中声明时才会在其他程序单元中可见。
至于第二个问题,那么变量确实有文件作用域和内部链接。
在某些明确指定的命名空间之外声明的任何变量都被视为在全局命名空间中声明。可以在包括全局命名空间在内的任何命名空间中声明具有外部或内部链接的变量。
我们说的是在任何函数之外声明的变量。
关于c++ - 全局范围与文件范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21445529/