2010-02-09 66 views
5

可能重复:
Static variable如何从C中的另一个文件访问静态变量?

如何从用C另一个文件访问一个静态变量? 由于静态变量具有文件范围,我认为我们无法在文件外访问它。但我仍然觉得可能有一些技巧或办法可以做到这一点。

+4

你为什么想这么做? – 2010-02-09 12:20:58

+0

什么@尼尔说,这是一个重复:http://stackoverflow.com/questions/1973162 –

回答

3

在声明中使用extern关键字指定该变量来自另一个文件(外部链接)。将静态关键字放在原始定义中。

外部与内部连接的东西被解释为in this article

+1

嗯。什么?一个既有内部链接又有外部链接的变量? –

+0

我澄清了声明与定义部分。 – Thorsten79

+0

现在,您的答案在技术上是正确的,但不幸的是,并没有回答这个问题。这个问题本身并不是那么好。 –

1

你只能间接地做到这一点,例如,如果包含静态变量的文件范围内的函数传递给它一个指针。

5

我不认为有一个简单的方法。如果你可以用静态变量更改文件,你可以这样做:

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

// A new function you write 
int * getHiddenVar() { 
    return &hiddenVar; 
} 

不过,当然,如果你可以改变文件,你刚落static关键字。

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