2010-02-09 1000 views
5

Duplicar posible:
Static variable¿Cómo acceder a una variable estática desde otro archivo en C?

cómo acceder a una variable estática de otro archivo en C? Como una variable estática tiene un alcance de archivo, creo que no hay forma de que podamos acceder a ella fuera de un archivo. Pero aún siento que podría haber algún truco o forma de hacer lo mismo.

+4

¿Por qué crees que quieres hacer esto? –

+0

Lo que @Neil dijo, y es un duplicado: http://stackoverflow.com/questions/1973162 –

Respuesta

3

Utilice la palabra clave extern en su declaración para especificar que la variable proviene de otro archivo (enlace externo). Suelta la palabra clave estática en tu definición original.

La cosa de vinculación externa vs. interna se explica in this article.

+1

Umm. ¿Qué? Una variable que tiene un enlace interno y externo? –

+0

Aclaré la declaración frente a la parte de definición. – Thorsten79

+0

Ahora su respuesta es técnicamente correcta, pero desafortunadamente no responde la pregunta. La pregunta en sí misma no es tan buena. –

1

Solo puede hacerlo de forma indirecta, p. si una función dentro del alcance del archivo que contiene la variable estática le pasa un puntero.

5

No creo que haya una manera fácil. Si se puede cambiar el archivo con la variable estática se puede hacer algo como:

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

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

Pero, por supuesto, si se puede cambiar el archivo, sólo caería la palabra clave static.

Además, dudo que esto ayude, pero he tenido que hacer algo como esto al escribir un módulo kernel en FreeBSD. Usé un truco donde llamé a las funciones del enlazador del kernel para encontrar la dirección de una función estática. Sin embargo, dudo que puedas hacer esto en un programa C normal.

Cuestiones relacionadas