gpt4 book ai didi

c - 缓冲区被读取为程序中未声明的,即使它是

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:49:10 24 4
gpt4 key购买 nike

试图从我的另一个问题中找出一些错误。我的编译器将 buff[counter] 读取为缓冲区,因此取消声明它。缓冲区是作为起始代码的一部分提供给我的,所以我不确定 buffer[counter] 是什么意思。尝试用谷歌搜索它没有帮助,因为我不知道如何找出 buffer[counter] 的含义,它是否像 buffer_counter?他们是说 buffer_counter 是缓冲区的计数器吗?任何帮助将不胜感激,特别是如果有人可以解释 [counter] 部分,因为这样我就可以自己修复它。

我在代码的开头有这个

#define BUFFER_SIZE 1000

int insert_item(buffer_item item){// add item as long as buffer isn't full
if(counter < BUFFER_SIZE) {
buffer[counter] = item;
counter++;
return 0;
}
else {
return -1; //buffer full error
}
}

// Remove an item from the buffer
int remove_item(buffer_item *item)// remove item and decrement counter when buffer not empty
{
if(counter > 0) {
*item = buffer[(counter-1)];
counter--;
return 0;
}
else { //buffer empty error
}
return -1;
}

还有这个 if(remove_item(&item)) {

触发一个相关的错误,称为“从不兼容的指针类型传递 remove_item 的参数 1”,如此处所示

void *consumer(void *param) {

while(TRUE) {
int rNum = rand() / RAND_DIVISOR; // sleep for a random period of time
sleep(rNum);
int item = rand()%100; // item is a random number between 1-100
sem_wait(&full);// aquire the full lock */
pthread_mutex_lock(&mutex);// aquire the mutex lock
if(remove_item(&item)) {
fprintf(stderr, "Consumer report error condition\n");
}
else {
printf("consumer consumed %d\n", item);
}
pthread_mutex_unlock(&mutex);// release mutex lock
sem_post(&empty); //signal empty
}
}

最佳答案

您需要声明全局buffercounter 变量:

typedef char buffer_item;

buffer_item buffer[BUFFER_SIZE];
unsigned int counter;

关于c - 缓冲区被读取为程序中未声明的,即使它是,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33621513/

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