Discussion:
variables globales
(demasiado antiguo para responder)
Pedro
2004-07-23 00:09:29 UTC
Permalink
Veamos, algo simple:

Quiero hacer una pequeña aplicación de ejemplo con estructuras (de datos de
libros) y funciones, separando el proyecto en los siguientes ficheros
fuentes a mi entender:

en "proglib.h" defino la estructura "lib" y los prototipos de dos funciones
(lista e introduce)
en "proglib.cpp" defino las funciones e incluyo la cabecera anterior.
en "libmain.cpp" escribo el programa "cliente" (con el main), incluyendo
también la cabecera. Aquí declaro el array de estructuras lib.

Antes de usar la variable estructura de libros como argumento a pasar a las
funciones, me gustaría usarla global, pero me produce error al intentar
accederla desde las funciones en "proglib.cpp". Aunque ya sé que esto no es
lo adecuado, quisiera saber el error que impide ver la estructura (globa)
desde otro archivo relacionado. ¿Tengo que usar extern? porque me suena muy
raro al estar todos los archivos como parte del proyecto del C++ Builder.

Gracias.
Bartomeu
2004-07-23 05:40:03 UTC
Permalink
Tienes que usar 'extern'. Aunque esté en el mismo proyecto no son visibles
si están en diferentes ficheros.

Para lo que quieres lo más cómodo sería poner:
En 'proglib.h'
extern tu_estructura TuNombreVariable;

En 'libmain.cpp' o en 'proglib.cpp', mejor en el primero, que tiene el main,
NUNCA en los dos:
tu_estructura TuNombreVariable;

Y entonces puedes utilizar TuNombreVariable en cualquier fichero que tenga
un include de 'proglib.h'.

Suerte.
Post by Pedro
Quiero hacer una pequeña aplicación de ejemplo con estructuras (de
datos de libros) y funciones, separando el proyecto en los
en "proglib.h" defino la estructura "lib" y los prototipos de dos
funciones (lista e introduce)
en "proglib.cpp" defino las funciones e incluyo la cabecera anterior.
en "libmain.cpp" escribo el programa "cliente" (con el main),
incluyendo también la cabecera. Aquí declaro el array de estructuras
lib.
Antes de usar la variable estructura de libros como argumento a
pasar a las funciones, me gustaría usarla global, pero me produce
error al intentar accederla desde las funciones en "proglib.cpp".
Aunque ya sé que esto no es lo adecuado, quisiera saber el error que
impide ver la estructura (globa) desde otro archivo relacionado.
¿Tengo que usar extern? porque me suena muy raro al estar todos los
archivos como parte del proyecto del C++ Builder.
Gracias.
Pedro
2004-07-25 10:04:39 UTC
Permalink
Muchas gracias, "Bartomeu". Ya me funciona con extern sin pegas.

Loading...