我正在尝试将固定结构转换为动态结构,但出现下一个错误:warning: data definition has no type or storage class
和warning: 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 *
放在clientes
中applicationVariables.c
的前面。您已经声明了clientes
,但是尚未定义它,因此,当前,您尚未为clientes
分配空间,并且无法分配它。
到目前为止,clientes
将在任何运行时上下文之外的全局范围内定义,因此您不能使用像malloc
这样的运行时函数来对其进行初始化。您可以使用常量初始化程序定义它,也可以将其移动到main()
或任何其他函数中。
关于c - 错误:结构指针中的类型冲突,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49382559/