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

Conflictos entre ariables globales. C

Estas en el tema de Conflictos entre ariables globales. C en el foro de Programación General en Foros del Web. Hola. Tengo un problema. Tengo muchos archivos .h y muchos .cpp. Como recomendacion de MaxExtreme, hice un archivo globals.h donde ahi ponia todas las variables ...
  #1 (permalink)  
Antiguo 01/04/2006, 12:52
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 22 años
Puntos: 52
Conflictos entre ariables globales. C

Hola. Tengo un problema.

Tengo muchos archivos .h y muchos .cpp.

Como recomendacion de MaxExtreme, hice un archivo globals.h donde ahi ponia todas las variables que queria que fueran visibles a todos los archivos, pero en modo extern, es decir, en un archivo x.cpp decalro una variable y en el globals .h la vuelvo a declarar como extern.

Ahora esta variable que esta en globals quiero que sea visible en todos mis cpp. Cada cpp tiene su header donde se definen estructuras que son usadas en su cpp. Me combiene incluir el globals.h en el header o directamente en el cpp?

En el globals.h sera comveniente incluir todas las cabeceras de los demas archivos?

Sera correcto usar el #ifndef/#ifdef para el rchivo globals.h?

Tengo una estructura que la llamo CPU. Esta estructura esta en un header x.
Y en el cpp de ese mismo header declaro CPU cpu; y para que sea global totalmente, en el globals.h hago extern CPU cpu. Pero esto me da errores.

Cual es la mejor manera de manejar variables globales?

Saludos
  #2 (permalink)  
Antiguo 01/04/2006, 16:26
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años, 7 meses
Puntos: 17
Lo mejor es que incluyas globals.h donde lo necesites, nada de incluir las cabeceras de otros archivos... ¿Para qué? Un consejo: Trata de utilizar siempre lo mínimo.

Por otra parte, si te da errores, supongo que es porque tratas de declarar un "extern CPU cpu", pero el compilador no conoce qué es CPU, por tanto debes incluir el header donde tengas declarado a CPU.

Sí, deberías usar

#ifndef TAL
#define TAL
..
#endif

en todos los headers que construyas.
  #3 (permalink)  
Antiguo 01/04/2006, 20:47
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 22 años
Puntos: 52
OK. Muchas gracias.
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 23:02.