2012-10-21 27 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>才能获得此宏。

相关问题