Foros del Web » Programación para mayores de 30 ;) » Programación General »

Variables globales con C

Estas en el tema de Variables globales con C en el foro de Programación General en Foros del Web. Tengo un tremendo problema con el alcance de variables globales. Lo que quiero es en una cabecera (header.h) declarar todas mis variables globales para despues ...
  #1 (permalink)  
Antiguo 07/06/2004, 17:12
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 5 meses
Puntos: 52
Variables globales con C

Tengo un tremendo problema con el alcance de variables globales.

Lo que quiero es en una cabecera (header.h) declarar todas mis variables globales para despues en todos los archivos que incluya esta cabecera, puedan tener acceso a esta variables globales.

Para eso use static. Todo funcionaba bien con static, pero despues me di cuenta que ocaciona errores con los valores de las variables en distintos archivo.

entonces me dijieron que con el extern se podia hacer esto.

Segun la documentacion, declaro una variable en donde sea y despues en otro archivo SIN incluir la cabecera en donde se declaro la variable global, usar extern y el nombre de la variable(claro, y si tipo).

Pues no me funciona.

Tengo una cabecera con prototipos de funciones y declaracion de variables y al usar extern en otros archivo, me dice que la variable ha sido redefinida.

Lo que quiero lograr es que pueda usar mis variables de la cabecera en todos mis archivos y cabeceras.


Ayuda porfavor.



Saludos
  #2 (permalink)  
Antiguo 08/06/2004, 10:18
 
Fecha de Ingreso: agosto-2001
Mensajes: 53
Antigüedad: 22 años, 8 meses
Puntos: 0
Estas encontrando problemas por que lo que quieres hacer es una chapuza que va en contra del concepto de programación extructurada.
Las variables globales están prohividas, no te digo ya lo que pretendes hacer.

Pero bueno, si quieres hacer lo que quieres hacer, yo lo haria así:

Declararia las variables en el .c donde esté el main como variables normales:

int a;

Luego las declararia como extern allí donde las quiera usar:

extern int a;

Y listo.

NUNCA se me ocurriria declarar una variable en un .h pues no tiene sentido. A la que pongas 2 veces una include a ese .h el compilador te dirá que las variables ya están declaradas. Entonces que sentido tiene una include que solo puede ponerse una vez en todo el hilo de ejecución?

Las variables estáticas mantienen su valor durante toda la ejecución, son otra historia. Por ejemplo, una variable estática en una función es válñida solo dentro de la función, pero el valor de la variable permanecerá en todas las llamadas a la función pues la variable no es destruida al finalizar la función sino que permanece en memoria aunque no sea accesible. Mi recomendación: no usarlas a no ser que tengas muy muy claro que es lo que estás haciendo.

Mi última recomendación: no usar variables globales: arrastra los valores que quieras como parámetros de funciones aunque sea mas engorroso, es lo correcto.
  #3 (permalink)  
Antiguo 08/06/2004, 15:10
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 5 meses
Puntos: 52
Bueno, el problema es de que estas variables tienen que ser modificadas en todos los archivo, aparte eso de referencia con punteros y todo eso me fastidia, claro que antes si lo usaba, pero para este proyecto decidi hacerlo con variables globales.

Saludos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:25.