Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: latinoalfredo en 30 Octubre 2012, 23:02 pm



Título: Estructura incompleta.
Publicado por: latinoalfredo en 30 Octubre 2012, 23:02 pm
tengo este codigo que me da porblemas:
Código:
typedef struct {
    char cidade[20];
    double datos[365];
    int n_datos;
}T_TEMP;

    struct T_TEMP *espacio;
    espacio=(struct T_TEMP*)malloc(n*sizeof(struct T_TEMP));
    return(*espacio);
cuando quiero asignarle un espcio de memoria a "espacio",el programa me dice "error: invalid application of ���sizeof��� to incomplete type ���struct T_TEMP��� "
alguien me puede decir cual es m fallo.


Título: Re: Estructura incompleta.
Publicado por: lapras en 30 Octubre 2012, 23:47 pm
Cuando haces typedef estas creando un nuevo tipo entonces no debes poner struct para declara una variable de ese tipo ni hacer un casting a ese tipo.
Es decir, puedes hacer:
Código
  1. typedef struct {
  2.    char cidade[20];
  3.    double datos[365];
  4.    int n_datos;
  5. }T_TEMP;
  6.  
  7.   T_TEMP *espacio;
  8.    espacio=(T_TEMP*)malloc(n*sizeof(T_TEMP));
  9.    return(*espacio);    //Que sepas que seguramente esto no es lo que realmente quieres hacer pero tampoco lo se si no veo el contexto
  10.  

Otra manera seria esta:

Código
  1. struct T_TEMP{
  2.    char cidade[20];
  3.    double datos[365];
  4.    int n_datos;
  5. };
  6.  
  7.    struct T_TEMP *espacio;
  8.    espacio=(struct T_TEMP*)malloc(n*sizeof(struct T_TEMP));
  9.    return(*espacio);