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」と互換性がありません」です。

ありがとう

4

2 に答える 2

2

関数を宣言する前に呼び出すと、C は戻り値の型がintではなくであることを意味しvoidます。

この宣言をヘッダーまたはファイルの先頭に追加して、問題に対処する必要があります。

static void removeAUfromNodeAUQ(gblAuqEntry *old, auQ *auqH);
于 2012-04-10T00:06:06.840 に答える
2

あなたのコードが投稿したとおりであれば、これは次のとおりです。

removeAUfromNodeAUQ(&old, &auqHdr); 

関数呼び出しではなく、関数宣言です。次に、それを定義しますが、異なる署名を使用します。そのコンテキストでは、関数を前方宣言しています。C は int の戻り型を想定しています。

于 2012-04-10T00:04:24.017 に答える