[英]Function declaration within a function definition with wrong signature?
我遇到了以下代碼:
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();
這是函數聲明嗎? 如是;
如果這不是函數聲明,那是什么?
是的,它是幾個函數原型聲明。
作為任何聲明,您都可以將它們包含在函數中。 它是其他函數內部無法提供的函數定義 (即其實現)。
至於參數不匹配,這就是C的工作方式。 如果您不聲明任何參數,則該函數將被聲明為具有未知數量的未知類型的參數,並且您真的可以調用它們傳遞幾乎所有內容,並且編譯器將不知道它是對還是錯。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.