2013-04-27 183 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