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

标签 c static global

我怀疑我是否用静态声明了全局变量。

文件1.c

static int a=5;

main()
{
   func();
}

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

文件2.c

func()
{
   extern int a;
   printf(a);
}

或者只能使用 extern 访问没有声明为 static 的全局变量?

最佳答案

不!
static 将变量的范围限制为相同的 translation unit .
static 给变量一个 Internal Linkage 并且无法在创建翻译单元之外访问此变量。

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

关于可以在另一个文件中使用 extern 访问静态声明的全局变量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13227986/

相关文章:

从 C 调用本地 Julia 包

c - 为什么 pthreads 的条件变量函数需要互斥体?

ruby-on-rails-3 - Rails 3 引擎和静态 Assets

c++ - 从另一个文件访问 C++ 中的外部变量

c++ - 全局字符数组不会被重新分配或正确输出

c++ - 为什么 AVFormatContext 指针在非全局结构对象中初始化,而在全局对象中初始化为 NULL?

c - 使用 syslog (linux) 在日志文件中写入错误类型

c - 如何将结构视为内存位置并使用指针分别访问元素

java - 注释类 "public static @interface"中的静态关键字是什么?

java - Android java性能: invoking static method from self class or outer class