在C中,(GCC编译器),全局变量的默认存储类是什么?
让我分享一个代码,例如:
int i;
void f()
{ --statements--}
main()
{ --- set of statements--- }
如果我说该变量i
是 static 而不是 extern ,我是否正确?
在C中,(GCC编译器),全局变量的默认存储类是什么?
让我分享一个代码,例如:
int i;
void f()
{ --statements--}
main()
{ --- set of statements--- }
如果我说该变量i
是 static 而不是 extern ,我是否正确?
在此代码中,i
具有静态存储时长和外部链接。
存储持续时间是指变量存储的生命周期。静态存储持续时间意味着变量在程序的整个生命周期内都存在。
联系是指名称和对象之间的关系。外部链接意味着具有外部链接的名称的所有实例都表示相同的对象。您int i;
将匹配extern int i;
来自另一个翻译单位的声明。
关键字static
在不同的上下文中用作存储持续时间说明符和链接说明符,因此不清楚变量是否为static
. 相反,应该考虑变量的存储持续时间和链接。
对于在任何函数之外声明的变量,您有以下情况:
static int variableWithfileScope; // Not exported. Only visible in current file.
int globalVariableThatIsExported; // Exported.
// Forward declaration. No variable defined.
extern int globalVariableThatIsDefinedSomewhereElse;
这是由标准定义的,适用于所有 C 编译器。