Robię niezawodnego protokołu przesyłania danych i mieć prototyp funkcjiKompilowanie C - "niezdefiniowane odniesienie do"?
void tolayer5(int, char data[]);
Przy pomocy structs
struct msg {
char data[20];
};
struct pkt {
int seqnum;
int acknum;
int checksum;
char payload[20];
};
I kiedy wywołać funkcję w następującym formacie:
tolayer5(A, packet.payload);
Gdzie A
to int
i packet.payload
jest struct pkt
, otrzymuję błąd lub "niezdefiniowane odniesienie do 'tolayer5(int, char*)'
. Czy możesz mi pomóc zobaczyć, czego tu brakuje?
void tolayer5(int AorB, char data[])
{
int i;
if (TRACE>2)
{
printf("TOLAYER5: data received:");
for (i=0; i<20; i++)
printf("%c",data[i]);
printf("\n");
}
}
Dziękuję wszystkim za pomoc w oryginalnym wydaniu! :) Próbując to naprawić, natknąłem się na nieskończoną pętlę, która, jak sądzę, ma coś wspólnego ze niewłaściwym adresowaniem znaków w tablicy (minęło trochę czasu odkąd zrobiłem to w ten sposób: C
. Czy możesz mi pomóc dowiedzieć się, gdzie tworzę nieskończoną pętlę
I zostały zaktualizowane powyższy kod do tego, co ja teraz pracuje z zachowaniem główne zmiany zostały do mojej funkcji:.
void tolayer5(int AorB, char data[])
i to wewnątrz linii funkcja: printf("%c",msgReceived.data[i]);
od teraz jest po prostu:
printf("%c",data[i]);
To jest błąd połączenia, czy na pewno łączysz również implementację dla 'void tolayer5 (int, char data []);'? – orlp
Jest plikiem c, który implementuje tolayer5 w projekcie. – drescherjm
Ponowna edycja: prototyp jest niekompatybilny z jego implementacją. char [] vs struct msg. –