miki53 napisał(a):
callbackem nazywamy komórkę w pamięci do której jest zapisywany i odczytywany adres funkcji
Można tak powiedzieć. Jest to zmienna typu wskaźnik do której której jest zapisywany/odczytywany adres funkcji.
miki53 napisał(a):
ustawiamy callbacka czyli komórkę pamięci do której będziemy zapisywać i odczytywać adres funkcji
void (*funkcja)(void);
To jest deklaracja wskaźnika. Jeszcze nic nie ustawiamy, ale tak w pamięci jest rezerwowane miejsce na przechowywanie adresu funkcji.
Co do działania tego przykładu.
linia:
funkcja =funkcja_LED_ON; Rejestruje pierwszego callbacka. Jeszcze nie wywołuje funkcji tylko przekazuje adres która funkcja ma być wywołana.
Calback jest wywoływany w funkcji obsługi klawisza key_event().
miki53 napisał(a):
Czyli w CALLBACK (komórce pamięci wpisujemy adresy funkcji do której chcemy się dostać, potem
w tej funkcji wywołanej znowu w callback zmieniamy adres na inną funkcję i skaczemy do innej funkcji )
tylko zmieniamy adres, ustawiamy nową funkcję do kolejnego wykonanie, ale jeszcze jej nie wywołujemy Wywołanie następuje w zdarzeniu key_event w lini:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Tu podmiana callbacków jest zrealizowana w funkcjach LED_ON, LED_OFF ale, to jest tylko przykład.
W zależności od potrzeb callbeck może być np ustawiony/zarejestrowany np. tylko raz w programie przed pętlą główną while, ale może być zmieniany w dowolnym innych miejscu w programie.
Wszytko w zależności od ewentualnych potrzeb.
------------------------ [ Dodano po: 7 minutach ]miki53 napisał(a):
Mam nadzieję że zabardżo nie namieszałem
Chyba nie namieszałeś i wygląda że załapałeś. Zwróć tylko uwagę, że w tym przykładzie callback jest przypisany bezpośrednio, natomiast Mirek w swoich bibliotekach i przykładach używa do tego funkcji rejestrującej, tak jak to jest w kolejnym przykładzie z tą pętlą która na przemian wywoływała dwie funkcje display.