赋值从指针生成整数,而不在 C 中强制转换 [错误:初始化无效]



对不起,我的英语不好!

我有此警告,此代码中有一个错误

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];

最新更新