2012-10-21 54 views
-1
q_node * pop(Queue * que) { 
    if ((que->size == 0) || (que == NULL)) return null; 
    q_node * item = que->head; 
    if (freeNode(que)) { 
     que->size--; 
     return item; 
    } else return null; 
} 

當我嘗試編譯時,我得到上述警告的底線這個函數。結構q_node和Queue編譯沒有問題,freeNode()...任何想法我做錯了什麼?警告:控制達到非無效功能的結束;錯誤:null未聲明(c)

我還得到第一條if語句行的錯誤「null undeclared」。

+0

您應該確保您從函數內的所有*路徑*返回值。如果函數'freeNode()'返回false,該怎麼辦? – SuperSaiyan

+5

它是'NULL',而不是'null'。 C區分大小寫。 –

+0

....你剛剛徹底編輯你的問題? -_- – nneonneo

回答

1
q_node * pop(Queue * que) { 
    if ((que->size == 0) || (que == NULL)) return NULL; 
    q_node * item = que->head; 
    if (freeNode(que)) { 
     que->size--; 
     return item; 
    } 
    return NULL; 
} 

刪除else語句是沒用的。現在沒有任何警告^ _^ 海灣合作委員會看到你最後錯過了一個回報聲明,並讓你知道以防萬一。

編輯:null - > NULL

+0

他的原始函數在'#define null NULL'後沒有給出警告。 'gcc'足夠聰明地認識到'else'涵蓋了所有的情況。 – nneonneo

+0

的確是海灣合作委員會的岩石......你用'-Wall'嘗試過嗎? – yeyo

+0

是的,我做到了。 '-Wall -Wextra -ansi -O',仍然沒有警告。 – nneonneo

1

在C中,使用NULL而不是null。您可能需要#include <stdlib.h>才能獲得此宏。

相關問題