Przekazywanie wskaźników do funkcji

0

Witajcie!

Czy istnieje jakiś mądry sposób na przekazanie wskaźnika do róznych rodzajów funkcji do innej funkcji? Chodzi o coś takiego poglądowo:
int Funkcja1(char * cos)
void Funkcja2(int a, int b)l
long *Funkcja3(int a, int b, long *ptr)l

void Funkcja_all( wskaznik do funkcji (1 lub 2 ub 3))
{ call wskaznik do funkcji (1 lub 2 lub 3);}

Czy da się to jakos sprytnie zrobić? [diabel]

0

hmmm w sumie najsprytniejsze co mi do glowy przechodzi tyo:

enum
{
  FIRST, SECOND, THIRD
};

int asdf( int a, float b );
char *qwer( char **c );
void zxcv( double d );

void wywolywacz( void*, int typ )
{
  union { int i, char *p } ret;
  switch( typ )
  {
     case FIRST:
        ret.i = (int(*)(int,float)func)( 1, 2.0f );
        break;
     case SECOND:
        ret.p = (char*(*)(char**)func)( jakas_tam_tablica );
        break;
      ... etc ...
  };
}

ofc mozna tyo zrobic brute force ;>

void wywolywacz ( void *func ) { (void(*)(void)func)(); }

i sie modlic zeby odpowiednie dane byly na stosie ;> (niebeda ;p)

0

Witaj!
Patrzac na takie rozwiazanie (nic do niego nie mam) to w sumie gra nie warta swieczki, bo juz prosciej chyba zrobic tak:
int Funkcja1(char * cos)
void Funkcja2(int a, int b)l
long *Funkcja3(int a, int b, long *ptr)l

void Funkcja_all( int funkcja)
{
switch (funkcja)
case 1: call funkcja 1
case 2: call funkcja 2
case 3: call funkcja 2
}

Moze mniej uniwersalne, ale sporo mniej klepania a chyba bedzie dzialac szybciej... ;-)

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