我已经解决了以下两个问题:
C 和 C++ 中的 static 和 extern 全局变量 https://stackoverflow.com/questions/11055802/static-and-extern-global-variables-in-c-and-c
C中的全局变量是否是静态的? https://stackoverflow.com/questions/4239834/global-variable-in-c-are-static-or-not
这两个问题都以不同的方式表达了这两件事。
问题1的回答:
默认情况下,C 和 C++ 上的全局变量不是 extern 也不是 static。
问题2的答案:
如果不指定存储类(即 extern 或 static 关键字),则默认情况下全局变量具有外部链接
我需要了解以下内容:
- 是全局变量
extern
默认情况下,在链接(或)中是否相当于通过指定来声明变量extern
存储类?
- 是全局变量
static
默认情况下,在作用域(或)中,它相当于通过指定来声明变量static
存储类?
- 有什么区别吗
C
or C++
?有人可以澄清一下吗?
是全局变量是extern
默认情况下,在链接(或)中,它相当于通过指定来声明变量extern
存储类?
在任何块外部、最外层声明的变量的默认存储持续时间、范围和链接具有static
储存期限,file范围和external
连锁。 C11标准规定:
6.2.1 标识符的范围(p4):
[...] 如果声明标识符的声明符或类型说明符出现在任何块或参数列表之外,标识符有文件范围,它在翻译单元的末尾终止。 [...]
6.2.2 标识符的链接(p5):
[...]如果对象的标识符声明具有文件范围且没有存储类说明符,则其链接为external
.
6.2.4 对象的存储时长(p3):
声明其标识符时未使用存储类说明符的对象_Thread_local
,或者与external or internal链接或与存储类说明符static
, has 静态存储时间.
So, if x
是全球性的
int x;
那么它的存储持续时间、范围和链接相当于x
in
extern int x;
是全局变量是static
默认情况下,在作用域(或)中,它相当于通过指定来声明变量static
存储类?
不会。正如我上面所说,其持续时间是static
它有file scope.
如果有任何 c 或 c++ 差异请澄清?
没有不同。两种语言的规则相同。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)