Variable Funktionsnamen?
-
Halöchen zusammen,
ich glaube ich werde euch in nächster Zeit öfters belästigen *g* Ich habe da noch mal eine Frage zu C, bei der google mit nicht helfen konnte (oder ich konnte google nicht gut genug füttern).
Gibt es in C einen Weg, mit "variablen Funktionsnamen" zu arbeiten? Zur Klarstellung: Ich möchte nicht für eine Funktion mehrere Namen. Viel, mehr möchte ich eine Variable, die einen Funktionsnamen repräsentiert (Pseudo-Code):
void f1() { printf("Funktion 1\n"); } void f2() { printf("Funktion 2\n"); } int main() { char fname[3]; strcpy(fname, "f1"); ausfuehren(fname); strcpy(fname, "f2"); ausfuehren(fname); }
Die Ausgabe wäre dann:
Funktion 1
Funktion 2Hintergrund: Ich würde gerne ein Struct bauen, das in etwa so aussieht:
typedef struct functions { char event[33]; char fname[33]; struct functions *next; struct functions *prev; } functions;
Wenn ein Bestimmtes Ereignis eintritt, würde ich ein einer Schleife, das Ereignis mit allen Elementen der Kette vergleichen, und bei dem richtigen Event die hinterlegte Funktion aufrufen.
Oder ist es aus Performance gründen eh ratsamer, ein ellenlanges If-Konsturkt zu bauen (case geht ja auf grund der Eigenschaft des charArrays nicht)?
Gruß,
Funny
-
du kannst von dem namen nicht auf die funktion schließen.
Denn C wird kompiliert und auf maschinenebene sind das alles nur noch nummern. Du musst hier also mit funktionszeigern arbeiten:
void f1() { puts("f1"); } void f2() { puts("f2"); } void (*function_pointer)(); function_pointer = f1; function_pointer(); //prints "f1"
siehe auch http://www.newty.de/fpt/index.html
-
Das ist doch eine schöne und klare Aussage, danke