jacabe napisał(a):
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Pole struktury o nazwie
keyshort to wskaźnik na funkcję. Taki wskaźnik to wartość 16-bitowa będąca adresem pierwszej instrukcji funkcji. Nie da się do niego wpisać jeszcze dodatkowo jakiegoś argumentu. Jedyny sposób to:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
[/syntax]
Jeżeli chcesz zapamiętać argument, z którym funkcja ma się wykonać, możesz np. dodać dodatkowe pole do struktury, które będzie przechowywać wartość tego argumentu:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
W strukturze zapisujesz:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Później wewnątrz funkcji:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Oczywiście istnieją zapewne inne możliwości osiągnięcia celu, być może lepsze, jednak z Twojego opisu nie potrafię wywnioskować, jaki ten cel dokładnie jest, więc trudno doradzić coś konkretnego.
Nie podałeś jednoznacznie np.:
Czy każdy klawisz ma inną funkcję callback, czy niektóre klawisze korzystają z tych samych funkcji, tylko z innym argumentem?
Czy argumenty to zmienne globalne, czy lokalne? Jeśli do funkcji chcesz przekazywać wskaźniki zmiennych globalnych, to być może wcale nie będziesz potrzebował callbacka z argumentem.
Nie mam w tej chwili czasu na dokładną analizę kodu, ale na pierwszy rzut oka mam wrażenie, że chyba niepotrzebnie przekombinowałeś...