如何从C中的另一个文件访问静态变量?

aks*_*aks 5 c static-variables

可能重复:
静态变量

如何从C中的另一个文件访问静态变量?由于静态变量具有文件范围,我认为我们无法在文件外访问它.但我仍然觉得可能有一些技巧或方法来做同样的事情.

bra*_*amp 5

我不认为有一个简单的方法.如果您可以使用静态变量更改文件,则可以执行以下操作:

static int hiddenVar; // The static var you want to get at

// A new function you write
int * getHiddenVar() {
   return &hiddenVar;
}
Run Code Online (Sandbox Code Playgroud)

但是当然如果您可以更改文件,则只需删除static关键字即可.

另外,我怀疑这有帮助,但在FreeBSD中编写内核模块时我不得不做这样的事情.我使用了一个技巧,我调用了内核的链接器函数来查找静态函数的地址.我怀疑你可以在普通的C程序中做到这一点.


Tho*_*n79 4

在声明中使用extern关键字来指定变量来自另一个文件(外部链接)。删除原始定义中的 static 关键字。

本文解释了外部链接与内部链接的关系。