[C con Clase] Ayuda Declarar Estructura

Steven Davidson steven en conclase.net
Mar Mar 6 08:47:15 CET 2007


Hola Diego,

El pasado 2007-03-06 06:16:53, D1e6o! escribió:

D> Hola, Bueno aca estaba con una duda... o mejor dicho una que resalta entre
D> las demás :D
D> No puedo crear una estructura que esté definida como externa... Alguien
D> puede ayudarme?
D> Tengo en mi función principal una estructura creada:
D> struct  comandos
D> {
D>     int longitud;
D>     int *datos;
D>     char *nombre;
D> };
D> comandos primero, segundo;
D> necesito usar en otras funciones que se encuentran en otros archivos la
D> estructura comandos, por ejemplo comandos tercero, cuarto; pero al
D> definirlos como externos me da error
D> Y en declaraciones.h que está incluída en todos mis archivos debería estar
D> "la instrucción mágica" q
D> No me deja declararla así porque me da error, y me gustaría poder usar mi
D> estructura a lo largo de todos mis archivos, los cuales incluyen a "
D> declaraciones.h" onde debería declarar mi estructura sin buenos
D> resultados... Muchas gracias!

Es normal que te dé un error al intenter "externizar" 'comandos', ya que éste no es una variable sino un tipo de dato. El vocablo 'extern' sirve para que el compilador y el enlazador sepan que se trata de una variable existente en algún otro fichero a la hora de enlazar. Los tipos de datos no ocupan memoria y realmente son un invento del compilador, o en este caso, tuyo - el programador. Por tanto no tiene sentido hablar de definiciones externas.

La solución es simplemente definir tal 'struct' en todos los demás ficheros fuentes que precisen esta estructura. Como has declarado este 'struct' en "definiciones.h", entonces es lógico incluir este fichero de cabecera en todos los ficheros fuentes o incluso otros ficheros de cabecera que necesiten conocer las "definiciones".


Espero haber aclarado la duda.

Steven


Más información sobre la lista de distribución Cconclase