试图从我的另一个问题中解决一些错误。我的编译器正在读取 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
}
}