2013-04-01 62 views
2
void delete_node(node_t *p, void *item) { 

    while(p -> next != NULL && (p->next)-> item != item) { 
     p = p -> next; 
    } 

    if (p -> next == NULL) { 
     printf ("The element you are searching for is not in the list\n"); 
    } 

    node_t *temp; 
    temp = p -> next; 
    p -> next = temp -> next; 
    temp -> prev = p; 
    free(temp); 
} 

我在.c文件中有此代碼。以前的___聲明在這裏?

void delete_node(node_t *p, void *item); 

這個原型是在.h文件和我,說:「衝突的類型delete_node」和「delete_node以前的聲明是在這裏」,我不知道爲什麼錯誤。

任何幫助,將不勝感激。謝謝!!

這是我node_t結構:

typedef struct node { 
    void *item; 
    struct node *next; 
    struct node *prev; 
} node_t; 
+0

原型是什麼樣的? –

+0

你在哪裏定義'node_t'? – mlibby

+0

這是我在第一塊代碼 – apkim221

回答

1

假設你有一個定義,這個錯誤的最可能的原因是,您使用的delete_node編譯器遇到的聲明或定義之前。如果是這種情況,那麼delete_node將假定返回類型爲int。因此,當編譯器稍後看到delete_node的實際定義/聲明時,它會產生該錯誤。

搜索delete_node的用法,並確保在使用前始終處理delete_node的定義。理想情況下,這應該包含在.c文件的頂部,或者如果delete_node用於多個.h文件,則應包含在頭文件中

+0

這是我的代碼中delete_node的第一個用法。 – apkim221

+0

@ user2041197只有在存在先前的定義或先前的用法時纔會觸發錯誤 – JaredPar

相關問題