【发布时间】:2011-01-14 19:03:48
【问题描述】:
【问题讨论】:
-
你认为你为什么要这样做?
-
@Neil 说了什么,这是重复的:stackoverflow.com/questions/1973162
标签: c static-variables
【问题讨论】:
标签: c static-variables
我认为没有简单的方法。如果您可以使用静态变量更改文件,则可以执行以下操作:
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 关键字。
解释了外部与内部链接的事情in this article。
【讨论】:
您只能间接执行此操作,例如如果包含静态变量的文件范围内的函数将指向它的指针传递给您。
【讨论】: