这是我的队列.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
我遇到了以下问题:
- 未知类型名称“Bool”
- 数组下标的类型为“char”
- 隐式声明函数“isFull”
第一个问题可以通过 typedef _Bool Bool 来解决,而静态变量的类型也许应该更改为 int ,并且函数名称应该更改为匹配 header 声明。
关于c - C 中的 bool 值队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42072518/