Wskaźniki do funkcji w C

0

Witam,
Mam pytanie. Mam strukturę i funkcję:

void                           (*handler[10])(void *);
void*                          handler_param[10];
static void zainstaluj(void *isr_handler, void *parametry, unsigned nr)
{
    handler[nr] = isr_handler;
    handler_param[nr] = parametry;
}
Dzięki temu funkcję mozna tak wywoływać po instalacji: np. handler[5](handler_param[5])

Czy da się dla powyższej definicji zainstalować taką funkcję:
void funkcja_do_instalacji(void *par)

Próbuje ją zainstalowac tak ale errory wyskakują:
zainstaluj(funkcja_do_instalacji, NULL, 5);
Najlepiej byłoby zadeklarować funkcję instalującą tak ją:
static void zainstaluj(void (*isr_handler)(void *), void *parametry, unsigned nr)
i wtedy errorów nie ma, ale w pracy kłócą się ze mną że przy parametrze void *isr_handler też da się instalować funkcję. Nie bardzo wiem jak.

0

Skoro funkcja zainstaluj przyjmuje parametr jako wskaźnik na void (void*), to do funkcji musisz właśnie podać wskaźnik na void, co się robi za pomocą rzutowania:

zainstaluj((void*)funkcja_do_instalacji, NULL, 5);

Bo wcześniej to miałeś wskaźnik na funkcję, która przyjmowała void* i zwracała void (nic).

1 użytkowników online, w tym zalogowanych: 0, gości: 1