可以在另一个文件中使用extern访问静态声明的全局变量吗?

dav*_*vid 4 c static global

如果我用静态声明全局变量,我有一个疑问.

在file1.c

static int a=5;

main()
{
   func();
}
Run Code Online (Sandbox Code Playgroud)

可以使用extern在另一个file2.c中访问吗?

file2.c中

func()
{
   extern int a;
   printf(a);
}
Run Code Online (Sandbox Code Playgroud)

或者只使用extern来声明没有静态声明的全局变量?

Alo*_*ave 13

没有!
static将变量的范围限制为相同的翻译单元.
static为变量提供内部链接,并且在创建的转换单元之外无法访问此变量.

如果您需要访问不同文件中的变量,只需删除static关键字即可.