2017-02-06 24 views
0

這是我queue.h隊列布爾用C

#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()'的錯誤「衝突類型。」 你能幫我解決這個問題嗎?

感謝,

基督教

+0

你把'queueInit();''int main(void)'裏面放了嗎? – timrau

+0

main.c中有什麼? – doctorlove

+1

發佈的代碼不會**生成上述錯誤。請發佈實際的代碼。 – 4386427

回答

0

使用GCC gcc queue.c -Wall -std=c11 -c queue我有以下問題:

  1. 未知類型名 '布爾'
  2. 數組下標具有類型 '字符'
  3. 隱函數聲明'isFull'

第一個問題可以通過typedef _Bool Bool解決,而靜態變量的類型應該更改爲int,函數名稱更改爲匹配頭聲明。