我正在尝试将固定结构转换为动态结构,但出现下一个错误: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

为什么会这样呢?很长时间以来,我一直在测试很多东西,但是并没有解决问题。任何想法?

谢谢。

最佳答案

两个问题:


struct cliente *放在clientesapplicationVariables.c的前面。您已经声明了clientes,但是尚未定义它,因此,当前,您尚未为clientes分配空间,并且无法分配它。
到目前为止,clientes将在任何运行时上下文之外的全局范围内定义,因此您不能使用像malloc这样的运行时函数来对其进行初始化。您可以使用常量初始化程序定义它,也可以将其移动到main()或任何其他函数中。

关于c - 错误:结构指针中的类型冲突,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49382559/

10-11 21:35