错误:结构指针中的冲突类型

时间:2018-03-20 11:04:46

标签: c struct malloc dynamic-memory-allocation

我正在尝试将固定结构转换为动态结构但我得到下一个错误:warning: data definition has no type or storage classwarning: type defaults to 'int' in declaration of 'clientes' [-Wimplicit-int]。我将展示我的项目:

文件variablesPrototypes.h

struct viaje {
    char identificador[MAX_TAM_IDENTIFICADOR+3];
    char ciudadDestino[MAX_TAM_CIUDAD_DESTINO+3];
    char hotel[MAX_TAM_HOTEL+3];
    int numeroNoches;
    char tipoTransporte[MAX_TAM_TIPO_TRANSPORTE+3];
    float precioAlojamiento;
    float precioDesplazamiento;
};

struct cliente {
    char dni[MAX_TAM_DNI+3];
    char nombre[MAX_TAM_NOMBRE+3];
    char apellidos[MAX_TAM_APELLIDOS+3];
    char direccion[MAX_TAM_DIRECCION+3];
    int totalViajes;
    struct viaje viajes[MAX_TAM_VIAJES_CLIENTE];
};

extern struct cliente *clientes;

文件applicationVariables.c

clientes = (struct cliente *)malloc(sizeof(struct cliente)*1);

在我的main.c首先包括variablesPrototypes.h,然后applicationVariables.c

为什么会这样?我已经测试了很多东西很长一段时间,但我没有解决问题。有什么想法吗?

谢谢。

1 个答案:

答案 0 :(得分:1)

两个问题:

  1. struct cliente *放在clientes的{​​{1}}前面。您已声明applicationVariables.c,但尚未定义,因此,目前您尚未为clientes分配空间而您无法分配空间。

  2. 现在,clientes在全局范围内已定义,超出任何运行时上下文,因此您无法使用运行时函数clientes一样初始化它。您可以使用常量初始化程序定义它,也可以将其移动到malloc或任何其他函数中。