2013-04-27 184 views
0

我用這個功能在我PROGRAMM和我通過receive(&head);把它。我做錯了什麼,並得到一個錯誤C2664:不能轉換參數1「鏈接**」到「鏈接*」當調用QUEUEget(&head)。如果我理解正確(*head)是另一個鏈接的鏈接,所以我應該做一些像(&(&head))但它不起作用。錯誤C2664,需要澄清

void receive(link *head){ 
     int j; 
     for (j=0;j<WINDOW;j++){ 
     if (((*head)->status==PENDING) || ((*head)->status==NEW)) { 
      (*head)->status=ACK; 
       printf("Packet No. %d: %d\n",(*head)->packetno,(*head)->status); 
       QUEUEget(&head); 
      } 
     } 
    } 
+1

嘗試'QUEUget(頭);' – JBentley 2013-04-27 12:40:04

回答

0

據推測在此上下文中

QUEUEget(&head); 

headlink*。您正在傳遞地址,這會給您一個指向指針的指針,即link**。你可能需要

QUEUEget(head) 
+0

如果我這樣做,我應該使用'(頭) - > status'裏面的'if'吧? 另外,如果我使用'接收(頭);'我得到同樣的問題,但現在當調用函數接收。 – user2192519 2013-04-27 12:45:20

+0

@ user2192519可能只是'head-> status'。 – juanchopanza 2013-04-27 12:47:28

+0

如果我這樣做,我得到錯誤C2227:' - >狀態'的左側必須指向類/結構/聯合/泛型類型。 – user2192519 2013-04-27 12:50:13

0

錯誤C2664:不能轉換參數1 「鏈接**」 到 「鏈接*」 調用QUEUEget(&頭)時。

這是告訴您QUEUEget函數需要一個link*(一個指向link)作爲它的參數,但你傳遞一個link**(指針的指針link)。

在你receive功能,參數head已經是link*

void receive(link *head); 

然而,在這一行,你要傳遞head地址(即指針link*)到QUEUEget

QUEUEget(&head); 

相反,只是通過head直接:

QUEUEget(head); 
+0

解決了這個問題。現在感謝您的幫助。 – user2192519 2013-04-27 12:52:04

+0

@ user2192519沒問題,還有很好的無意雙關! – JBentley 2013-04-27 12:56:13