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

可能重复:
静态变量

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

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

static int hiddenVar; // The static var you want to get at // A new function you write int * getHiddenVar() { return &hiddenVar; } 

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

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

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

本文将介绍外部与内部链接的关系。

您只能间接执行此操作,例如,如果包含静态变量的文件范围内的函数传递给您指针。