SoloCodigo

Programación General => C/C++ => Visual C++ => Mensaje iniciado por: Sandra_mad en Miércoles 17 de Noviembre de 2004, 11:25

Título: Errores Con Vbles Globales
Publicado por: Sandra_mad en Miércoles 17 de Noviembre de 2004, 11:25
Hola a todos!!! Me estan dando muchos problemas las variables globales; Tengo varias clases, y todas ellas tienen que acceder a las mismas variables, para ello que mejor que usar variables globales, no??? Pues bien, me estan dando muchos problemas; Las he declarado en muchos sitios, y me dan errores en todos; Las tengo declaradas en el fichero .h de una de las clases, y en las demas clases les pongo el #include "xxxx.h" donde las tengo declaradas, con el objetivo de poder usarlas, no me dan errores al acceder a ellas desde las otras clases, pero me dan tantos errores de linkado como variables tengo; Error tipico que me sale:

DescargarExtensiones.obj : error LNK2005: "int  Des_Archivo" (?Des_Archivo@@3HA) already defined in DescargarArchivo.obj

Como puedo solucionarlo?????

Gracias, y buenos dias;
Título: Re: Errores Con Vbles Globales
Publicado por: Ruben3d en Miércoles 17 de Noviembre de 2004, 17:00
Hola.

Hay que ver la diferencia entre una declaración y una definición. Una declaración sólo le indica al compilador que algo existe y una definición hace lo mismo, además de reservar memoria para lo que se haya indicado. Por ello, si defines la variable en el .h y lo incluyes muchas veces lo que harás será reservar memoria varias veces para la misma variable. Lo que tienes que hacer es declararla en el .h y hacer la reserva en un archivo .c ó .cpp. Por ejemplo, si la variable es una cadena de texto deberías hacer:
Código: Text
  1.  
  2. /* En el .h, ésto será lo que se incluya para indicar que ésta
  3.    variable tiene reservada memoria y puede ser utilizada. */
  4. extern char cadena[256];
  5.  
  6. ------
  7.  
  8. /* En el .c ó .cpp, ésta es la reserva estática de memoria para
  9.    la variable y sólo puede haber una por variable/programa. */
  10. char cadena[256];
  11.  
  12.  

Un saludo.

Ruben3d
Título: Re: Errores Con Vbles Globales
Publicado por: Sandra_mad en Miércoles 17 de Noviembre de 2004, 21:25
Muchas gracias por su ayuda, seguire su consejo y ya les contare