警告:控件到达非无效函数的末尾;错误:null未声明(c)

警告:控件到达非无效函数的末尾;错误:null未声明(c),c,C,当我试图编译时,我得到了这个函数底线的上述警告。structs q_节点和队列编译没有问题,就像freeNode一样…知道我做错了什么吗 我还未声明第一个if语句行的错误null。在C中,使用null代替null。您可能需要包含以获取此宏 q_node * pop(Queue * que) { if ((que->size == 0) || (que == NULL)) return null; q_node * item = que->head; if (free

当我试图编译时,我得到了这个函数底线的上述警告。structs q_节点和队列编译没有问题,就像freeNode一样…知道我做错了什么吗

我还未声明第一个if语句行的错误null。

在C中,使用null代替null。您可能需要包含以获取此宏

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;
}
删除else语句是无用的。现在没有警告^_^ Gcc会发现您在结尾处遗漏了一条返回语句,并且会让您知道,以防万一


编辑:null->null

您应该确保从函数内的所有路径返回值。如果函数freeNode返回false呢?它是NULL,而不是NULL。C是区分大小写的…..您刚才是否对您的问题进行了大幅编辑-_-他的原始函数在定义null之后没有给我任何警告。gcc足够聪明,可以意识到else涵盖了所有情况。。。你试过用-墙吗?是的,我试过了-Wall-Wextra-ansi-O,仍然没有警告。哇,没有警告?哦,好吧,问问用户1436111:P他是第一个得到警告的人,我无法编译代码来运行一些测试。警告:控件到达非无效函数的末尾
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;
}