Skocz do zawartości

Błąd wskaźnika


Pieter

Rekomendowane odpowiedzi

Mam problem, napotkałem nieoczekiwany błąd z mojej strony przekazując pointer do funkcji...

 

numerki przy linii oznaczają numery faktycznych linii :P

 

Definicje itd. Numery linii nie są tu ważne

#define MAX_CLIENT_BUFFER 16384
typedef unsigned char pChar;
int sizepos;
pChar sBuffer[MAX_CLIENT_BUFFER];

 

Funkcja którą napisałem

91. void PutByte(pChar byte, pChar *buffer[MAX_CLIENT_BUFFER], int *position)
92. {
93.    *buffer[*position] = byte;
94.    *position = *position + 1;
95. }

 

Kod wykonywania

151. sizepos = 2;
152. PutByte(0x09, &sBuffer, &sizepos);
153. SendPacket(client->ClientSock, sBuffer, sizepos);

 

a komunikat który otrzymałem to:

ihooy@ihooy-laptop:~/Pulpit$ cc servth.c -o server -lpthread
servth.c: In function ‘ParsePacket’:
servth.c:152: warning: passing argument 2 of ‘PutByte’ from incompatible pointer type
servth.c:91: note: expected ‘pChar **’ but argument is of type ‘pChar (*)[16384]’

 

dopiero się uczę C/C++ i po prostu nie mam pojęcia co może być tu źle...

Odnośnik do komentarza
Udostępnij na innych stronach

Zmień ten parametr w PutByte:

pChar* buffer[MAX_CLIENT_BUFFER]

na jedno z tych:

pChar buffer[MAX_CLIENT_BUFFER]
pChar buffer[]
pChar* buffer

i popraw te linijki:

152. PutByte(0x09, &sBuffer, &sizepos);
na
PutByte(0x09, sBuffer, &sizepos);
i
93.    *buffer[*position] = byte;
94.    *position = *position + 1;
na
buffer[(*position)++] = byte;

Ten parametr zdefiniowałeś jako tablice wskaźników na typ pChar, a konflikt typów występuje pewnie dlatego, że nie możesz pobrać adresu wskaźnika na tą statyczną tablice, bo ten nie będzie zachowany w pamięci (po skompilowaniu kod odwoływałby bezpośrednio do tego bloku pamięci).

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...