我遇到了以下代码:
delete_list(list **l, item_type x)
{
list *p; /* item pointer */
list *pred; /* predecessor pointer */
list *search_list(), *predecessor_list();
p = search_list(*l,x);
if (p != NULL) {
pred = predecessor_list(*l,x);
if (pred == NULL) /* splice out out list */
*l = p->next;
else
pred->next = p->next;
free(p); /* free memory used by node */
}
}
我无法理解这条线的含义:
list *search_list(), *predecessor_list();
这是一个功能声明吗?如果是的话;
如果这不是函数声明,那么这是什么?
答案 0 :(得分:2)
是的,这是一些函数原型声明。
正如任何声明一样,你可以将它们放在一个函数中。它是函数 definitions (即它们的实现),你不能拥有其他函数。
至于论证不匹配,这就是C的工作原理。如果你没有声明任何参数,那么函数将被声明为具有未知数量的未知类型的参数,并且你可以真正地调用它们传递任何东西,编译器将不知道它是对还是错。