Poziom X - Lekcja: Wskaźnik na funkcję
Ostatnio zmodyfikowano 2018-06-13 20:14
aerocell Temat założony przez niniejszego użytkownika |
Poziom X - Lekcja: Wskaźnik na funkcję » 2018-06-13 19:18:59 Hej, nie wiem czy to problem ze zrozumieniem działania wskaźników na funkcje czy błąd leży gdzie indziej, lecz chcąc zadeklarować owy wskaźnik (do uchwytu) typedef void( * handler )( int );
void registerHandler( int, handler );
...
void registerHandler( int signal, handler handler ) { sigset_t iset; struct sigaction act; sigemptyset( & iset ); act.sa_handler = & handler; act.sa_mask = iset; act.sa_flags = 0; sigaction( signal, & act, NULL ); } Przy kompilacji cały czas wyskakuje błąd: In function ‘void registerHandler(int, handler)’: error: cannot convert ‘void (**)(int)’ to ‘__sighandler_t {aka void (*)(int)}’ in assignment
A z tego co sprawdzałem w dokumentacji, to sighandler_t jest dokładnie tego samego typu, czyli void( * __sighandler_t )( int ) znalezione tu -> http://students.mimuw.edu.pl/SO/LabLinux/STRUKTURY/PROCESY/sigaction.html#__sighandler_t |
|
pekfos |
» 2018-06-13 19:49:42 act.sa_handler = & handler;
|
Jaki sens ma przypisanie adresu argumentu funkcji? Po wyjściu z funkcji adres nie będzie wskazywać na nic poprawnego. |
|
aerocell Temat założony przez niniejszego użytkownika |
» 2018-06-13 20:14:28 Ale fail, nie zauważyłem :x Działa, dzięki! |
|
« 1 » |