2012-04-10 4 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; 
    } 
} 

J'essaie de supprimer l'élément 'old' dans la liste 'auqHdr'.Passer le pointeur sur une fonction

L'erreur que je reçois est "déclaration est incompatible avec précédent" removeAUfromNodeAUQ "" Quelqu'un peut-il s'il vous plaît souligner ce que je fais mal ici?

Merci

+0

Il serait utile si votre code utilisé des variables qui étaient vaguement lisibles. Si 'auqHdr' est une liste, appelez-la 'myList' afin que les gens ici puissent plus facilement comprendre ce que fait votre code. C'est une bonne idée de faire en sorte que vos noms de variables soient descriptifs et lisibles en général. –

Répondre

2

Si vous appelez la fonction avant déclarant il, C implique un type de retour de int, non void.

Vous devez ajouter cette déclaration dans l'en-tête ou en haut de votre dossier pour résoudre le problème:

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

Merci dasblinkenlight! C'était ça. J'ai oublié de le déclarer avant de l'utiliser. – mane

2

Eh bien, si votre code est exactement comme vous avez publié, alors ceci:

removeAUfromNodeAUQ(&old, &auqHdr); 

est-ce pas un appel de fonction, il est une déclaration de fonction. Vous le définissez ensuite, mais avec une signature différente. Dans ce contexte, vous êtes en train de déclarer une fonction. C suppose un type de retour d'int pour vous.

+0

Merci Ed S et dasblinkenlight. – mane

Questions connexes