本文介绍了是默认的extern全局变量或它相当于用在全局的extern声明变量?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我经历了以下两个问题了,
static在C和C的extern全局变量++
这两个问题说,在不同的方式两件事情。
问题1的答案:全局变量不是extern关键字,也不是一成不变默认情况下,C和C ++
问题2的答案:如果不指定存储类(也就是extern或static关键字),则默认情况下全局变量的外部链接
我需要知道以下几点。
- 是全局变量默认情况下,在联动的extern(或)也就相当于通过指定外部存储方式类声明的变量?
2.is全局变量是静态的默认范围(或)它相当于通过指定静态存储类声明变量?
3,如果有任何C或C ++的区别请你澄清?
解决方案
The default storage duration, scope and linkage of variables declared outside any block, at the outer most level, have static
storage duration, file scope and external
linkage. C11 standard says that:
6.2.1 Scopes of identifiers (p4):
6.2.2 Linkages of identifiers (p5):
6.2.4 Storage durations of objects (p3):
So, if x
is global
int x;
then its storage duration, scope and linkage is equivalent to x
in
extern int x;
No. As I stated above that its duration is static
and it has file scope.
No difference. Rule is same in both languages.
这篇关于是默认的extern全局变量或它相当于用在全局的extern声明变量?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!