Ошибка C2664, требуется уточнение

Я использую эту функцию в своей программе и вызываю ее 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);
}
}
}

0

Решение

Предположительно в этом контексте

QUEUEget(&head);

head это link*, Вы передаете адрес, который дает вам указатель на указатель, т.е. link**, Вам наверное нужно

QUEUEget(head)
0

Другие решения

ошибка 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);
0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector