2012-04-10 235 views
2
//old and auqHdr are data structures of type gblAuqEntry and auQ respectively 
//I traverse through the list 'auqHdr' and when I match the element 'old', I need to remove it 

removeAUfromNodeAUQ(&old, &auqHdr); 


//Function implementation 
static void removeAUfromNodeAUQ(gblAuqEntry *old, auQ *auqH) 
{ 
    auQ *auqPtr, *prev; 
int found =0; 
for (auqPtr = auqH; auqPtr; auqPtr = auqPtr->nxt) 
{ 
    if (something) 
     prev = auqPtr; 
    else 
    { 
     prev->nxt = old->nxt; 
     found = 1; 
     break; 
    } 
} 

我試圖從列表'auqHdr'中刪除元素'old'。將指針傳遞給某個函數

我得到的錯誤是「聲明與以前不兼容」removeAUfromNodeAUQ「」 有人可以指出我在這裏做錯了嗎?

感謝

+0

如果你的代碼中使用的那名依稀可讀變量這將是有益的。如果'auqHdr'是一個列表,就把它叫做'myList',這樣這裏的人可以更容易地理解你的代碼在做什麼。儘管如此,讓變量名稱具有描述性和可讀性是一個好主意。 – 2012-04-10 00:09:00

回答

2

如果您在聲明之前調用此函數,則表示返回類型爲int,而不是void

你應該在頁眉或在你的文件的頂部添加這個聲明來解決這個問題:

static void removeAUfromNodeAUQ(gblAuqEntry *old, auQ *auqH); 
+0

謝謝dasblinkenlight!就是這樣。我忘了在使用它之前宣佈它。 – mane 2012-04-10 00:08:46

2

好吧,如果你的代碼是完全按照你貼出來,那麼這個:

removeAUfromNodeAUQ(&old, &auqHdr); 

是不是一個函數調用,它是一個函數聲明。然後您定義它,但具有不同的簽名。在這種情況下,你正在宣佈一個功能。 C爲你假設int的返回類型。

+0

謝謝埃德S和dasblinkenlight。 – mane 2012-04-10 00:09:26