Trochę dostaję pomieszania, dlatego piszę jakby dla siebie, a może i nie tylko.
Przekazuję tak jak zrozumiałem temat z pogadanek szanownego Mirka.
Widzę w takim porządku:
1. Mamy funkcję:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
2. Chcę na nią pokazywać wskaźnikiem rtc_callback.
Definiujemy więc ten wskaźnik o takim samym typie zwracanym i argumentach jak nasza funkcja:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
3. Definiujemy funkcję rejestrującą, która będzie inicjowała (ustawiała) wskaźnik przekazaną w argumencie funkcją.
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Czyli do naszego wskaźnika rtc_callback (już bez * ) wpisywać będziemy nazwę funkcji callbackowej.
Nazwa funkcji jest jednocześnie adresem tejże funkcji. Czyli funkcja rejestrująca ustawia do wskaźnika adres przekazanej funkcji.
4. W programie przed main wykorzystujemy funkcję rejestrującą następująco:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
czyli
inicjujemy wskaźnik rtc_callback przesłaną funkcją pokazuj_date_czas:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
5. I na koniec, w pętli main wywołujemy funkcję RTC_EVENT().
W niej dopiero następuje wywołanie funkcji pokazywanej wskaźnikiem.
Po sprawdzeniu oczywiście, czy wskaźnik jest ustawiony:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
To tak samo, jakbyśmy wywoływali funkcję tak:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
lub zapewne tak:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Koniec wywodu.
Musiałem się rozpisać, aby sobie trochę w głowie to poukładać.