2010-02-09 56 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程序中做到這一點。