对不起,我的英语不好!
我有此警告,此代码中有一个错误
PD:此程序将监视对象(ADT(存储在循环队列中
错误和警告
CQueue.c:在函数"CQueue_Insert"中: CQueue.c:59:26:警告:赋值从指针生成整数而不强制转换 [-Wint-转换] this->queue[this->last] = x;
CQueue.c:在函数"CQueue_Remove"中: CQueue.c:70:14:错误:初始值设定项无效 Reloj_t x = 这个>队列[这个>第一个];
代码循环队列结构
typedef struct{
int* queue;
size_t first;
size_t last;
size_t max;
size_t cont;
} CQueue;
Reloj_t结构
体typedef struct Reloj
{
int horas;
int minutos;
int segundos;
//char nombre[MAX_TAM];
} Reloj_t;
有问题的函数
void CQueue_Insert( CQueue* this, const Reloj_t* x )
{
if(CQueue_IsFull(this)==true){exit(1);}
this->queue[this->last] = x;
++this->cont;
++this->last;
if(this->last == this->max){
this->last=0;
}
}
Reloj_t CQueue_Remove( CQueue* this )//this function returns Reloj_t objects
{
if(CQueue_IsEmpty(this) == true){exit(1);}
Reloj_t x = this->queue[this->first];
--this->cont;
++this->first;
if(this->first == this->max){
this->first=0;
}
return x;
}
对于警告,您正在分配指向整数的指针。
即:this->queue[this->last]
是一个整数,而x
是一个指针(指向一个Reloj_t(。
我认为你想做的是
this->queue[this->last] = x->SOMESTUFF; //or something like this, depends on the definition of Reloj_t
我不知道是什么原因导致错误,你能发布Reloj_t的定义吗?
如果Reloj_t是一个结构体,你可以做
Reloj_t x
x.SOMESTUFF = this->queue[this->first];