在C、(GCC Compiler)中,全局变量的默认存储类是什么?
让我分享一个代码例如:
int i;
void f()
{ --statements--}
main()
{ --- set of statements--- }
如果我说变量 i
是 static 而不是 extern 是否正确?
最佳答案
在此代码中,i
具有静态存储持续时间,以及外部链接。
存储持续时间 是指变量存储的生命周期。 静态存储期是指变量在程序的整个生命周期内都存在。
Linkage 是指名称和对象之间的关系。 外部链接 意味着具有外部链接的名称的所有实例都表示同一对象。您的 int i;
将匹配来自另一个翻译单元的声明 extern int i;
。
关键字static
在不同的上下文中用作存储持续时间说明符和链接说明符,因此询问变量是否为static
并不明确。相反,应考虑变量的存储持续时间和链接。
关于c - 默认全局变量的存储类(gcc 编译器)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40356368/