Przekazywanie funkcji o różnych argumentach do funkcji [C]

0

Witam,
W jaki sposób najlepiej przekazać do funkcji funkcje które moga mieć różną ilość argumentów, ale zawsze zwracany przez nie typ to void?
Może na przykładzie jaką funkcjonalność potrzebuję:
void funkcja1(unsigned x, int y);
void funkcja2(void);
void funkcja3(char znak, unsigned *tab);

void (*tab_funkcji[30])(void *);
tab_funkcji[0] = funkcja1;
tab_funkcji[1] = funkcja2;
tab_funkcji[2] = funkcja8;

0

Przekazać możesz w dowolny sposób - chociażby przez (void*) - problemem będzie raczej to skąd będziesz wiedział jakie parametry ta funkcja przyjmuje? Sprawdzenie czy funkcja wskazywana przez wskaźnik to void f1(int x, int y) czy void f2(void) jest niestety niemożliwe...

Ale jeśli masz na to jakiś sposób to możesz zawsze z (void*) rzutować na wskaźnik do funkcji i go wywołać.

0

Takiego czegoś (bezpośrednio) nie da rady zrobić.
Ale możesz zrobić:

  1. klasy pochodzące od jednej wspólnej, każda funkcja przyjmuje wskaźnik/referencje do klasy bazowej.
  2. funkcje mają pierwszy parametr umożliwiający identyfikacje ilości i typów parametrów, coś na kształt funkcji printf.

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