C 缓冲区在程序中被读取为未声明,即使它是

C 缓冲区在程序中被读取为未声明,即使它是,c,linux,debugging,consumer,producer,C,Linux,Debugging,Consumer,Producer,试图从我的另一个问题中找出一些错误。我的编译器正在读取buff[counter]作为缓冲区,从而取消对它的解释。缓冲区是作为起始代码的一部分提供给我的,所以我不确定缓冲区[计数器]是什么意思。我不知道如何找到buffer[counter]的含义,所以尝试用谷歌搜索也没用。它像buffer\u counter吗?他们是说缓冲区计数器是缓冲区的计数器吗?任何帮助都将不胜感激,特别是如果有人能够解释[反]部分,因为那样我就可以自己解决它了 我在代码的开头有这个 #define BUFFER_SIZE

试图从我的另一个问题中找出一些错误。我的编译器正在读取buff[counter]作为缓冲区,从而取消对它的解释。缓冲区是作为起始代码的一部分提供给我的,所以我不确定缓冲区[计数器]是什么意思。我不知道如何找到buffer[counter]的含义,所以尝试用谷歌搜索也没用。它像buffer\u 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;
   }

您需要声明全局
缓冲区
计数器
变量:

typedef char buffer_item;

buffer_item buffer[BUFFER_SIZE];
unsigned int counter;

buffer
是一个数组,
buffer[counter]
使用索引
counter
访问数组的元素。因为这两个变量都没有在函数中声明,所以它们必须是全局变量;在我的程序开始时(在这里我定义了全局变量)?你不能用谷歌搜索
buffer\u item
,因为它不是标准的C类型。它应该在程序的某个地方声明为
typedef
。您不需要这样做。只需初始化
计数器=0。对于全局变量,这是自动发生的。哦,我误解了,但即使我这么做了,它仍然认为buffer[counter]意味着一个名为bufferis buffer的变量类型,比如int buffer?int缓冲区[缓冲区大小];我已经更新了答案。似乎所有这些东西都应该在您收到的代码中声明。您可能忘记了加载声明它们的头文件的
#include
行吗?我在上一行中没有发布完整的代码,但这就是问题所在。我想你是想链接到,如果你已经从另一个问题中修复了,你不应该得到一个关于
buffer
未声明的错误。
typedef char buffer_item;

buffer_item buffer[BUFFER_SIZE];
unsigned int counter;