c++ - 全局范围与文件范围

标签 c++ scope global-variables

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

如果声明时没有static关键字:

  1. 它有文件作用域外部链接或者
  2. 它具有程序作用域并且对程序中的所有文件可见

如果用static关键字声明:

  1. 它具有全局作用域内部链接或者
  2. 它有文件作用域内部链接

全局命名空间范围如何与此相关?

这个概念真的很令人困惑,虽然我认为我理解它是如何工作的,但在不同的地方他们以不同的方式调用它,所以我不知道哪个是正确的。

最佳答案

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

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

至于第二个问题,那么变量确实有文件作用域和内部链接。

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

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

关于c++ - 全局范围与文件范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21445529/

相关文章:

Javascript 变量作用域返回未定义

c++ - 使用 char* 存储整数

c++ - CLion cout打开命令提示符窗口,而不使用CLion的终端

c# - 为什么以及何时无法在 C# 的 CLASS SCOPE 中执行某些操作?

javascript - Javascript 中嵌套函数 "Class"结构中的变量范围

c - 从线程更新全局变量

Javascript 全局范围分配

c++ - 无法在 Windows 10/Visual C++ 2017 上使用 tensorflow C++ API tensorflow_cc.lib 链接 C++ -- undefined symbol r2.0

C++/C : Prepend length to Char[] in bytes (binary/hex)

javascript - 按顺序存储 2 个数字