c - C 中的 bool 值队列

标签 c 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()'的类型冲突。 你能帮我解决这个问题吗?

谢谢

基督教

最佳答案

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

  1. 未知类型名称“Bool”
  2. 数组下标的类型为“char”
  3. 隐式声明函数“isFull”

第一个问题可以通过 typedef _Bool Bool 来解决,而静态变量的类型也许应该更改为 int ,并且函数名称应该更改为匹配 header 声明。

关于c - C 中的 bool 值队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42072518/

相关文章:

c - 使用 qsort() 对整数数组进行排序并交换字符串

java - 使用 LinkedQueue 模拟购物线

c - GCC 生成的 64 位代码比 32 位代码慢 3 倍

将 const char 转换为数组

java - 不可变队列的需求是什么?

java - 循环数组的队列实现

c# - 简单队列算法

c - 从队列中使用 dequeue 方法时抛出异常

c - 如果我不关心返回值,我应该用什么返回类型声明一个函数?

c - 如何安全地在 C 中使用枚举?