Zeiger auf Funktionen

Hallo liebe C-Profis,

Folgendes Problem:

Angenommen, wir haben mehrere Funktionen

f1(…)
.
.
.
fn(…)

mit unterschiedlich vielen Parametern aber gleichem Rückgabetyp. Ein Programm will über einen Funktionszeiger eine der Funktionen aufrufen. Es ist aber zur Compilezeit nicht klar, auf welche Funktion der Zeiger zeigt, da sich das zur Laufzeit ändern kann. Da ich unterschiedlich viele Parameter je Funktion habe, geht das nicht, oder?

Gibts einen Trick, z.B. man fasst die Parameter in einem Array zusammen, so dass alle Funktionen nur einen Parameter haben, und holt sie in den Funktionen dann wieder da raus, o.Ä. ?

Ciao,
Martin.

Hallo Martin,

Schau dir mal das Kapitel zu „ellipses“ (…) an.
und die geschichte mit „va_arg“.

Variable anzahl Parameter.

MfG Peter(TOO)

Hi Martin,
der von Dir selbst vorgeschlagene Trick sollte eigentlich funcktionieren. Wenn alle Argumente vom selben Typ sind, fast Du sie in einem Feld zusammen, andernfalls in einer „union“.

Waehrend der Laufzeit wird doch irgendwann entschieden, welche Funktion nun aufgerufen werden soll. Du kannst dann im Prinzip auch eine Fallunterscheidung machen, etwa so

fun = irgendeinevondenfunktionen_func1_bis_funcn

if (fun == func1)
result = (*fun)(arg1);
else if (fun == func2)
result = (*fun)(arg1, arg2);
else if ()

Das ist zwar nicht elegant, aber klar. Je nach C-compiler bekommst Du evtl noch Probleme mit den Typen der Funktionen.

Ciao,
T

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

Danke,

ich glaube das sollte mir helfen :wink:

Ciao,
Martin.