Static vs global

12 浏览
0 Comments

Static vs global

如果我有一个如下的C文件,那么ij 的区别是什么?

#include 
#include 
static int i;
int j;
int main ()
{
    //Some implementation
}

admin 更改状态以发布 2023年5月25日
0
0 Comments

i 在模块外不可见;j 可以全局访问。

也就是说,另一个与它链接的模块可以执行

extern int j;

然后能够读写 j 的值。同样的,另一个模块无法访问 i,但是可以声明自己的实例,包括全局实例,这对第一个模块不可见。

0
0 Comments

i 具有内部链接,因此您不能在其他源文件(严格来说是翻译单元)中使用名称 i 来引用同一对象。

j 具有外部链接,因此如果您在另一个翻译单元中声明它为 extern,则可以使用 j 引用此对象。

0