2010-02-09 12 views
5

Eventuali duplicati:
Static variableCome accedere a una variabile statica da un altro file in C?

come accedere a una variabile statica da un altro file in C? Poiché una variabile statica ha un ambito di file, penso che non ci sia modo di accedervi al di fuori di un file. Ma sento ancora che potrebbe esserci qualche trucco o modo per fare lo stesso.

+4

Perché pensi di voler fare questo? –

+0

Cosa ha detto @Neil ed è un duplicato: http://stackoverflow.com/questions/1973162 –

risposta

3

Utilizzare la parola chiave extern nella dichiarazione per specificare che la variabile proviene da un altro file (collegamento esterno). Elimina la parola chiave statica nella definizione originale.

Il collegamento esterno e interno è spiegato in this article.

+1

Umm. Che cosa? Una variabile che ha sia il collegamento interno che quello esterno? –

+0

Ho chiarito la parte dichiarazione/definizione. – Thorsten79

+0

Ora la tua risposta è tecnicamente corretta, ma purtroppo non risponde alla domanda. La domanda in sé non è poi così bella. –

1

È possibile farlo solo indirettamente, ad es. se una funzione nell'ambito del file che contiene la variabile statica ti passa un puntatore.

5

Non credo ci sia un modo semplice. Se è possibile modificare il file con la variabile statica si può fare qualcosa di simile:

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

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

Ma, naturalmente, se è possibile modificare il file, si sarebbe solo cadere la parola chiave static.

Inoltre, dubito che questo aiuti, ma ho dovuto fare qualcosa di simile scrivendo un modulo del kernel in FreeBSD. Ho usato un trucco in cui ho chiamato le funzioni del linker del kernel per trovare l'indirizzo di una funzione statica. Dubito che tu possa farlo in un normale programma C.

Problemi correlati