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