• Domingo 17 de Noviembre de 2024, 21:19

Autor Tema:  Errores Con Vbles Globales  (Leído 1338 veces)

Sandra_mad

  • Miembro activo
  • **
  • Mensajes: 28
    • Ver Perfil
Errores Con Vbles Globales
« en: Miércoles 17 de Noviembre de 2004, 11:25 »
0
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;

Ruben3d

  • Miembro HIPER activo
  • ****
  • Mensajes: 710
  • Nacionalidad: es
    • Ver Perfil
    • Web personal
Re: Errores Con Vbles Globales
« Respuesta #1 en: Miércoles 17 de Noviembre de 2004, 17:00 »
0
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

Sandra_mad

  • Miembro activo
  • **
  • Mensajes: 28
    • Ver Perfil
Re: Errores Con Vbles Globales
« Respuesta #2 en: Miércoles 17 de Noviembre de 2004, 21:25 »
0
Muchas gracias por su ayuda, seguire su consejo y ya les contare