elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Variables globales en ficheros .h
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Variables globales en ficheros .h  (Leído 7,797 veces)
Kherom

Desconectado Desconectado

Mensajes: 40



Ver Perfil
Variables globales en ficheros .h
« en: 19 Enero 2012, 20:55 pm »

Buenas, tengo un problema, he intentado declarar algunas variables globales en ficheros .h para accedera a ellas desde cualquier punto sin preocuparme de ellas, pero siempre me las intenta declarar varias veces y tira error pesar de que supuestamente sólo debería definir el fichero una vez ya que lo hago tal que así:

Código
  1. #ifndef LOQUESEA
  2. #define LOQUESEA
  3.  
  4. //Declaraciones
  5.  
  6. #endif //LOQUESEA

¿Sabéis qué hago mal o si simplemente no se puede?


En línea

soyloqbuskas

Desconectado Desconectado

Mensajes: 218


¡El conocimiento es de todos!


Ver Perfil
Re: Variables globales en ficheros .h
« Respuesta #1 en: 20 Enero 2012, 00:49 am »

Buenas Kherom !

Hasta donde yo se, no se puede hacer declaraciones de variables en las cabeceras (.h) de los programas. En las cabeceras solo estan los nombres de las funciones y procedimientos a las que otro modulo o clase puede llamar.

Si quieres crear una variable global para un modulo, deberas declararla en el .c fuera de cualquier funcion. Asi esa variable sera global para ese modulo.

Si lo que quieres hacer es crear una variable global para todos los modulos, creo que esto no se puede hacer.

De todas formas, no te recomiendo el uso de variables globales, ya que cuando una funcion f1() usa esa variable deja la variable con basura y si luego la funcion f2() la usa, puede que la funcion f2() no te muestre un resultado correcto. Asi que debes tener mucho cuidado con las variables globales.

Espero haberte servido de ayuda, un saludo.


En línea

"Si tienes 1 manzana y yo tengo otra manzana...
y las intercambiamos, ambos seguiremos teniendo 1 manzana.
Pero...si tu tienes 1 idea y yo tengo otra idea...
y las intercambiamos, ambos tendremos 2 ideas."


George Bernard Shaw
Kherom

Desconectado Desconectado

Mensajes: 40



Ver Perfil
Re: Variables globales en ficheros .h
« Respuesta #2 en: 20 Enero 2012, 02:20 am »

Creo que sí que se pueden hacer globales a todos los ficheros con extern, al menos en c++ se puede, en c creo que también. Por otro lado si dejo una variable como global es por que obviamente quiero compartir datos entre funciones, no voy a declarar el contador de una función como global xD (En mi caso la variable es un puntero con todos los datos de usuarios cargados desde un fichero, aunque también lo he usado para IDs, manejadores, etc)
En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Variables globales en ficheros .h
« Respuesta #3 en: 20 Enero 2012, 04:04 am »

El problema se debe a la diferencia entre declaraciones y definiciones. Si necesitas de una variable "global" (técnicamente estas no existen en C, son una combinación de "file scope" y "external linkage") debes declarar la variable en el archivo de inclusión utilizando la palabra reservada "extern", por ejemplo:
Código
  1. /* Declaracion de la interfaz */
  2.  
  3. extern int x;

Esa variable la debes definir en una sola unidad (sin utilizar "extern") y, por supuesto, fuera de toda función:
Código
  1. int x;

De esa forma tienes la declaración de la variable en varias unidades (al incluir el encabezado) y sola una definición (en la unidad que lo requiera).

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Pasar variables por formulario sin variables globales¿? « 1 2 »
PHP
hardkoo 11 9,135 Último mensaje 22 Noviembre 2006, 12:55 pm
por chicuela66
Variables globales ¬¬
PHP
Tyrz 4 2,664 Último mensaje 15 Noviembre 2007, 18:32 pm
por Tyrz
variables globales
Java
m@o_614 4 3,198 Último mensaje 10 Junio 2012, 19:03 pm
por Proteus1989
[C#] Variables globales en 2 forms
.NET (C#, VB.NET, ASP)
jaxoR 3 2,824 Último mensaje 9 Marzo 2015, 06:56 am
por DarK_FirefoX
Variables globales cargadas desde la bbdd en Symfony 2
PHP
viher 0 1,321 Último mensaje 27 Diciembre 2015, 15:33 pm
por viher
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines