typedef struct car car_t;
struct Car {
int carID[QUEUE_SIZE];
int f[QUEUE_SIZE];
};
int main (){
int Array[ARRIVAL_QUEUE_SIZE];
car_t *ddd = (car_t*)malloc(sizeof(car_t));
for(int i =0; i<2; i++){
int carid = ((CARID_NUMBER_MIN)+(int)((double)(NUMBER_MAX-NUMBER_MIN+1)*rand()/(RAND_MAX+1.0)));
Array[i] = carid;
ddd-> carID[i] = Array[i];
ddd-> f[i] = Array[i];
}
}
它正在抱怨指向不完整类型的解除引用指针以及将'sizeof'无效应用于不完整类型'car_t'
答案 0 :(得分:5)
嗯,这是因为car_t
指的是struct car
是一个不完整的类型。
您确定不是struct Car
(大写'C')吗?
sizeof(car_t)
调用中不会知道malloc
,因为您尚未指定 内部的结构。
ISO C标准(C99,6.2.5)将不完整类型定义为“描述对象但缺少确定其大小所需信息”的类型。这正是你在这种情况下所拥有的。
答案 1 :(得分:0)
我认为你需要在你的typedef中大写汽车。
typedef struct Car car_t;
答案 2 :(得分:0)
要解决您的错误,请在您的typedef中大写“c”:
typedef struct Car car_t;
这为我编译:
#include <stdlib.h>
typedef struct Car car_t;
static const int QUEUE_SIZE = 10;
static const int ARRIVAL_QUEUE_SIZE = 10;
static const int CARID_NUMBER_MIN = 10;
static const int NUMBER_MAX = 10;
static const int NUMBER_MIN = 0;
struct Car {
int carID[QUEUE_SIZE];
int f[QUEUE_SIZE];
};
int main (){
int Array[ARRIVAL_QUEUE_SIZE];
car_t *ddd = (car_t*)malloc(sizeof(car_t));
for(int i =0; i<2; i++){
int carid = ((CARID_NUMBER_MIN)+(int)((double)(NUMBER_MAX-NUMBER_MIN+1)*rand()/(RAND_MAX+1.0)));
Array[i] = carid;
ddd-> carID[i] = Array[i];
ddd-> f[i] = Array[i];
}
}