Funktionenpointer runtime in C

Hallo Ihr :smile:

Kann ein C Programm _waehrend es laeuft_ Funktionen aufrufen, von denen es erst zur Laufzeit den Namen kennt?

main(…) {
…
strcpy(fname,„beispiel“)
rufe_function_mit_namen_fname_auf(???)
…
}

(wenn ihr versteht, was ich meine)

gruesse
kampi

Hallo kampi,
spätestens beim Linken muß der Name der Funktion bekannt sein.

Du kannst allerdings einen Funktionspointer einer anderen Funktion als Parameter mitgeben.

qsort macht das so. qsort sortiert eine Liste von Elementen. Dazu benötigt qsort eine Vergleichsfunktion, die zwei Elemente aus der Liste vergleicht.

Deklaration:
void qsort(void *base, size_t nmemb, size_t size, int (*compar)(const void *a, const void *b))

Aufruf:
qsort(Listenpointer,Anzahl_der_Elemente,sizeof(Element),(int (*) (const void *,const void*)) Vergleichsfunktion);

Innerhalb von qsort wird die Funktion so aufgerufen:

(*compar)(a,b);

Ich hoffe ich konnte dir weiterhelfen.

Stefan

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo kampi,

wenn das Programm einen Zeiger auf diese Funktion hat, kann es diese Funktion auch aufrufen. So etwas macht man z.B. bei der Funktion qsort(). Man schreibt die Vergleichsfunktion und über gibt qsort() die Adresse der selber geschriebenen Funktion, man nennt so etwas dann eine Callback Funktion.

Gruß Patrick

Hallo kampi,
spätestens beim Linken muß der Name der
Funktion bekannt sein.

Tjaja, ich habe solches vermutet :frowning:
Anyway, ein C Programm schreibt ein anderes und dann muss ich das halt aus dem schreibenden Prog tun. Nicht schoen, aber wohl unumgaenglich…

Ich hoffe ich konnte dir weiterhelfen.

naja, eigentlich nur meine Befuerchtungen bestaetigen :wink:
Dennoch dank.

kampi