Я использую эту функцию в своей программе и вызываю ее receive(&head);
. Я делаю что-то не так и получаю ошибку c2664: не могу преобразовать параметр 1 из «link **» в «link *» при вызове QUEUEget(&head)
, Если я правильно понимаю (*head)
это ссылка на другую ссылку, поэтому я должен сделать что-то вроде (&(&head))
но это не работает
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);
}
}
}
Предположительно в этом контексте
QUEUEget(&head);
head
это link*
, Вы передаете адрес, который дает вам указатель на указатель, т.е. link**
, Вам наверное нужно
QUEUEget(head)
ошибка c2664: невозможно преобразовать параметр 1 из «link **» в «link *» при вызове QUEUEget (&голова).
Это говорит вам о том, что QUEUEget
функция ожидает link*
(указатель на link
) в качестве параметра, но вы передаете его link**
(указатель на указатель на link
).
В вашем receive
функция, параметр head
уже link*
:
void receive(link *head);
Однако в этой строке вы передаете адрес head
(то есть указатель на link*
) в QUEUEget
:
QUEUEget(&head);
Вместо этого просто пройдите head
непосредственно:
QUEUEget(head);