2012-04-10 6 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».Передача указателя на функцию

Ошибка, которую я получаю, является «декларацией, несовместимой с предыдущей« removeAUfromNodeAUQ »« Может кто-нибудь, пожалуйста, указать, что я делаю неправильно здесь?

Благодаря

+0

Было бы полезно, если ваш код используется переменные, которые были смутно читаемым. Если «auqHdr» - это список, просто назовите его «myList», чтобы люди здесь могли более легко понять, что делает ваш код. Это хорошая идея, чтобы ваши имена переменных были описательными и читаемыми в целом. –

ответ

2

При вызове функции перед тем объявить его, C означает тип возвращаемого int, не void.

Вы должны добавить это объявление в заголовке или в верхней части файла, чтобы решить эту проблему:

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

Спасибо dasblinkenlight! Это было. Я забыл объявить это раньше, чем использовать его. – mane

2

Ну, если ваш код именно так, как вы писали, то это:

removeAUfromNodeAUQ(&old, &auqHdr); 

Разве это не вызов функции, это объявление функции. Затем вы определяете его, но с другой подписью. В этом контексте вы начинаете объявлять функцию. C принимает тип возврата int для вас.

+0

Спасибо Ed S и dasblinkenlight. – mane

Смежные вопросы