gpt4 book ai didi

c - 赋值从指针生成整数,无需在 C 中进行强制转换 [错误 : invalid initializer]

转载 作者:行者123 更新时间:2023-11-30 16:27:27 27 4
gpt4 key购买 nike

抱歉我的英语不好!

我在这段代码中收到此警告和一个错误

PD: this program store Watches object(ADT) in a Circular Queue

错误和警告

CQueue.c: In function ‘CQueue_Insert’: CQueue.c:59:26: warning: assignment makes integer from pointer without a cast [-Wint-conversion] this->queue[this->last] = x;

CQueue.c: In function ‘CQueue_Remove’: CQueue.c:70:14: error: invalid initializer Reloj_t x = this->queue[this->first];

代码循环队列结构

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

关于c - 赋值从指针生成整数,无需在 C 中进行强制转换 [错误 : invalid initializer],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52732204/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com