Tag: internal link

从一个文件访问静态变量到另一个文件

我最近遇到过如何访问一个在file1.c中声明为static的变量到另一个file2.c的问题? 是否可以访问静态变量? 我对C中静态关键字的理解是, static是“内部链接”,因此只能从一个编译单元访问它们 – 它们是定义它们的单元。 使用内部链接声明的对象是单个模块的私有对象。 正如我的一位朋友建议我解决方案。 在file1.c #include 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 )之外,还有其他方法可以访问静态变量。 我怎么能从另一个文件访问静态变量? 在C中,如何将全局变量的范围限制为声明它的文件? 如果我对静态变量概念有误,并且有更好的解决方案可用于访问静态变量,请纠正我?