可能重复:
Static variable
如何从C中的另一个文件访问静态变量? 由于静态变量具有文件范围,我认为我们无法在文件外访问它。但我仍然觉得可能会有一些技巧或方法来做同样的事情。
答案 0 :(得分:5)
我认为没有一种简单的方法。如果您可以使用静态变量更改文件,则可以执行以下操作:
static int hiddenVar; // The static var you want to get at
// A new function you write
int * getHiddenVar() {
return &hiddenVar;
}
但是当然如果您可以更改文件,则只需删除静态关键字。
另外,我怀疑这会有所帮助,但在FreeBSD中编写内核模块时我不得不做这样的事情。我使用了一个技巧,我调用了内核的链接器函数来查找静态函数的地址。我怀疑你可以在普通的C程序中做到这一点。
答案 1 :(得分:3)
在声明中使用extern关键字指定变量来自另一个文件(外部链接)。删除原始定义中的static关键字。
解释了外部与内部联系的事情in this article。
答案 2 :(得分:1)
你只能间接地这样做,例如如果包含静态变量的文件范围内的函数传递指向它的指针。