我最近遇到了一个问题,例如如何将在 file1.c 中声明为静态的变量访问到另一个 file2.c?
是否可以访问静态变量?
我对 C 中 static 关键字的理解是,
static
是“内部链接”,因此它们只能从一个编译单元访问——即定义它们的那个编译单元。使用内部链接声明的对象对单个模块是私有的。
正如我的一位朋友建议我以下解决方案。
在file1.c
#include <stdio.h>
int main()
{
int b=foo();
printf("%d",b);
return 0;
}
在file2.c
static int a=25;
int foo()
{
return a;
}
编译gcc file1.c file2.c -o file
如果我在上面做,我可以访问变量。
所以我的问题是:
上述程序是否违反静态变量规则?
如果不是,为什么会这样,除了包括文件()之外,还有其他方法可以访问静态变量
#include <…>
。如果我对静态变量概念有误以及是否有更好的解决方案可用于访问静态变量,请纠正我?