在C中排队的布尔人

时间:2017-02-06 16:22:25

标签: c queue

这是我的queue.h

#define MAX_SIZE 40

void queueInit(void);
Bool queuePeek(void);
Bool queueIsEmpty(void);
Bool queueIsFull(void);
int queueSize(void);
void enqueue(Bool data);
Bool dequeue(void);

这是实施:

#include "queue.h"

static char head, tail, itemCnt;
static Bool buffer[MAX_SIZE];

void queueInit(void)
{
    head = 0;
    tail = -1;
    itemCnt = 0;
}

Bool queuePeek(void)
{
    return buffer[head];
}

Bool queueIsEmpty(void) {
   return itemCnt == 0;
}

Bool queueIsFull(void) {
   return itemCnt == MAX_SIZE;
}

int queueSize(void) {
   return itemCnt;
}

void enqueue(Bool data)
{
       if(!isFull()) {

          if(tail == MAX_SIZE-1) {
             tail = -1;
          }

          buffer[++tail] = data;
          itemCnt++;
       }

}


Bool dequeue(void)
{
     Bool data = buffer[head++];

       if(head == MAX_SIZE) {
          head = 0;
       }

       itemCnt--;
       return data;
}

现在我尝试调用main.c中的函数

queueInit();

之后我收到错误“'queueInit()'的冲突类型。 你能帮我解决一下这个问题吗?

谢谢,

基督教

1 个答案:

答案 0 :(得分:0)

使用GCC gcc queue.c -Wall -std=c11 -c queue我遇到了以下问题:

  1. 未知类型名称' Bool'
  2. 数组下标有类型' char'
  3. 隐含的功能声明' isFull'
  4. 第一个问题可以使用typedef _Bool Bool来解决,而静态变量的类型应该更改为int,并且更改函数名称以匹配标头声明。