Avatar billede zorkmontana Nybegynder
20. september 2010 - 11:27 Der er 4 kommentarer og
1 løsning

funktion fra variable

Hej

Jeg ville vide om det er muligt at kalde en funktion ved hjælp af en variabel i C?
altså om det er muligt at gøre noget ligende dette eller på anden vis hvis det er muligt.

char word[5] = "iword";

word();

void iword(void) {
// function
}
Avatar billede arne_v Ekspert
20. september 2010 - 15:36 #1
Leder du efter en function pointer?

Morsomt eksempel:

#include <stdio.h>
#include <stdlib.h>

typedef void (*fptr)();

void f1()
{
  printf("f1\n");
}

void f2()
{
  printf("f2\n");
}

void f3()
{
  printf("f3\n");
}

void f4()
{
  printf("f4\n");
}

int main()
{
    fptr f[] = { f1, f2, f3, f4 };
    int i;
    srand(12345);
    for(i=0;i<10;i++)
    {
        f[rand() % 4]();
    }
    return 0;
}
Avatar billede arne_v Ekspert
20. september 2010 - 15:37 #2
Eller leder du efter muligheden for at loade en function paa navn fra en DLL (eller tilsvarende paa andre platforme)?

Kode snippet:

#include <windows.h>
#include <stdio.h>

typedef int (*DF)(int a, int b);

int main()
{
  HINSTANCE dll1,dll2;
  DF fncptr1,fncptr2;
  dll1 = LoadLibrary("d.dll");
  dll2 = LoadLibrary("d.dll");
  fncptr1 = (DF)GetProcAddress(dll1,"test");
  fncptr2 = (DF)GetProcAddress(dll2,"test");
  printf("%d %d\n",(int)dll1,fncptr1(12,34));
  printf("%d %d\n",(int)dll2,fncptr2(12,34));
  return 0;
}
Avatar billede zorkmontana Nybegynder
20. september 2010 - 15:55 #3
Super det var en functions pointer jeg kiggede efter
Avatar billede arne_v Ekspert
20. september 2010 - 16:04 #4
saa smider jeg et svar
Avatar billede zorkmontana Nybegynder
20. september 2010 - 18:48 #5
Endnu engang mange tak.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester



Seneste spørgsmål Seneste aktivitet
I går 20:46 opkaldside Af hagbartm i Mobiltelefoner
I går 16:05 win 10 vil ikke boote Af bb69 i Windows
I går 11:20 Lenovo x390 Af tobberjas i PC
I går 10:14 Alder i Excel Af Nanarsi i Excel
I går 09:00 Flere linier på faneblad Af Peder Lund Nielsen i Excel