SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: System@32 en Jueves 26 de Noviembre de 2009, 16:49

Título: Estructura archivos .h y .c
Publicado por: System@32 en Jueves 26 de Noviembre de 2009, 16:49
Hola a todos!!!

A ver... tengo un archivo .h llamado tdatos.h (tipos de datos), donde hay algunas constantes y los encabezados de las estructuras. Ademas tengo el tdatos.c donde estan definidas las estructuras. Ahora en el archivo principal hago el include del tdatos.h, hasta aqui todo bien, creo una variable con uno delos tipos de datos que hay definidos en el tdatos.h. Ahora puedo acceder a toda la estructura no esa variabel sin problemas, pero cuando le doy a compialar, me VS2008 me dice que uso un struct sin definir...

Ejemplo:

tdatos.h
Código: C
  1.  
  2. #ifndef TDADES_H
  3.     #define TDADES_H
  4.  
  5.     #define MAX_NOMBRE 30
  6.     typedef struct DATOS DATOS;
  7. #endif
  8.  
  9.  

tdatos.c
Código: C
  1.  
  2. #include "tdades.h"
  3. struct DATOS{
  4.     char nombre[MAX_NOMBRE];
  5.     int tlf;
  6. };
  7.  
  8.  

main.h
Código: C
  1.  
  2. #include "tdades.h"
  3.  
  4. void main()
  5. {
  6.     DATOS dat;
  7.     dat.nombre[0] = 'p';
  8.     dat.tlf = 887887;
  9. }
  10.  
  11.  
Título: Re: Estructura archivos .h y .c
Publicado por: Epa en Jueves 26 de Noviembre de 2009, 19:31
Buenas.

Estas compilando en c o c++?
Tu archivo fuente tiene extension .c, si no me equivoco en C no hay typedef.

#include "tdades.h" <-- tdades o tdatos?

Saludos
Título: Re: Estructura archivos .h y .c
Publicado por: System@32 en Jueves 26 de Noviembre de 2009, 19:47
Ups... error al traducir del catalan a castellano... xd

Lo estoy compilando en C, .c... El final resulta que las estructuras se tienen que poner en el .h tambien... muchas gracias por contestar...
Título: Re: Estructura archivos .h y .c
Publicado por: shakka en Jueves 26 de Noviembre de 2009, 21:08
Para este caso que no usa funciones, yo no me complicaria y solo tendria la cabecera tdatos.h
Título: Re: Estructura archivos .h y .c
Publicado por: System@32 en Jueves 26 de Noviembre de 2009, 22:36
Al final lo he puesto en header, para quitar complicaciones... hasta que gane experiencia con includes mios, a lo facil...

SALU2!!!
Título: Re: Estructura archivos .h y .c
Publicado por: locazopro en Lunes 30 de Noviembre de 2009, 21:59
recuerda que lo que estas incluyendo en el main.c es tdatos.h, y hasta donde tengo entendido en las cabeceras las estructuras deben ir definidas allí, solo se admite declaraciones sin cuerpo para funciones únicamente, que alguien me corrija si me equivoco.
Título: Re: Estructura archivos .h y .c
Publicado por: shakka en Lunes 30 de Noviembre de 2009, 23:13
Cita de: "locazopro"
recuerda que lo que estas incluyendo en el main.c es tdatos.h, y hasta donde tengo entendido en las cabeceras las estructuras deben ir definidas allí, solo se admite declaraciones sin cuerpo para funciones únicamente, que alguien me corrija si me equivoco.

Que en las cabeceras solo se admita la declaracion del prototipo de la funcion no, pero es uena practica, es mas organizacion pero cuando se esta aprendiendo puede resultar algo complejo, de hecho aprendi primero en el main de la aplicacion podiendo todo, luego separe las funciones y estructuras en una o varias cabeceras las funciones, estructuras y demas organizado por relacion de las funciones, despues separe las cabeceras dejando prototipo, y estructuras y creando aparte una fichero de implementacion(c) con la definicion de las funciones, para que, una vez teniendolas operacionales y depuradas precompilandolas en ficheros de libreria solo para usarlas en la aplicacion.
Título: Re: Estructura archivos .h y .c
Publicado por: capsula4 en Jueves 3 de Diciembre de 2009, 00:59
Estás usando primero typedef y luego declaras la estructura DATOS, deberia ser al revés