elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
28 Mayo 2012, 21:26  


Tema destacado: Últimos eventos sobre seguridad/inseguridad

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse)
| | |-+  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 247 veces)
Kherom

Desconectado Desconectado

Mensajes: 28



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

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
#ifndef LOQUESEA
#define LOQUESEA
 
//Declaraciones
 
#endif //LOQUESEA

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


En línea
soyloqbuskas

Desconectado Desconectado

Mensajes: 94


¡El conocimiento es de todos!


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

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: 28



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

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: 382


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

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
/* Declaracion de la interfaz */
 
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
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

The capacity to learn is a gift;
The ability to learn is a skill;
The willingness to learn is a choice.
--
Rebec of Ginaz
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¿?
PHP
hardkoo 11 2,518 Último mensaje 22 Noviembre 2006, 12:55
por chicuela66
Variables Globales C++
Programación C/C++
SirLanceCC 5 994 Último mensaje 11 Noviembre 2006, 23:39
por Ragnarok
Variables globales ¬¬
PHP
Tyrz 4 668 Último mensaje 15 Noviembre 2007, 18:32
por Tyrz
Problema en las variables globales
Programación C/C++
HJZR4 14 982 Último mensaje 26 Noviembre 2007, 14:00
por ^Tifa^
variables globales y locales « 1 2 »
Programación C/C++
mapers 15 2,595 Último mensaje 6 Agosto 2009, 20:38
por h0oke
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines