Zeiger auf Funktion
Verfasst: Mi Jun 24, 2009 6:31 pm
Hi
Ich suche momentan nach einer Möglichkeit, den Nutzer eines Programms durch Eingabe selbst bestimmen zu lassen, welche Funktion ausgeführt werden soll.
Jedoch habe ich keine Lust für jede, zur Verfügung stehende Funktion eine eigenes if zu setzen und die Eingabe mit den Funktionsnamen abzugleichen.
Ich dachte mir, ein pointer auf eine Funktion würde sich hierzu gut eignen, doch stehe ich nun leider vor einem Problem.
Da ich ja gerade erst bei dem Versuch bin, das Prinzip heraus zu finden, habe ich es einfach einmal so
versucht.
Allerdings meldet mein Compiler dann : "Warnung: Zuweisung erzeugt Zeiger von Ganzzahl ohne Typkonvertierung"
Bisher dachte ich, der Zeiger wäre bereits für Funktionen mit einem int-Rückgabewert geeignet.
Ich habe versucht es zu casten und habe die Zeile
durch
ersetzt, doch die nun wird mir gemeldet: "Warnung: Zuweisung von inkompatiblem Zeigertyp"
Könnte mir bitte jemand sagen, was genau ich falsch mache, oder mir einen anderen Ansatz vorstellen?
Ich suche momentan nach einer Möglichkeit, den Nutzer eines Programms durch Eingabe selbst bestimmen zu lassen, welche Funktion ausgeführt werden soll.
Jedoch habe ich keine Lust für jede, zur Verfügung stehende Funktion eine eigenes if zu setzen und die Eingabe mit den Funktionsnamen abzugleichen.
Ich dachte mir, ein pointer auf eine Funktion würde sich hierzu gut eignen, doch stehe ich nun leider vor einem Problem.
Da ich ja gerade erst bei dem Versuch bin, das Prinzip heraus zu finden, habe ich es einfach einmal so
Code: Alles auswählen
#include <stdio.h>
int test(int i)
{
printf("%d",i);
return 0;
}
int main()
{
int (*fct) (int a);
char c[50];
fct=scanf("%s",c);
(*fct)(1);
return 0;
}
Allerdings meldet mein Compiler dann : "Warnung: Zuweisung erzeugt Zeiger von Ganzzahl ohne Typkonvertierung"
Bisher dachte ich, der Zeiger wäre bereits für Funktionen mit einem int-Rückgabewert geeignet.
Ich habe versucht es zu casten und habe die Zeile
Code: Alles auswählen
fct=scanf("%s",c);
Code: Alles auswählen
fct=(int*)scanf("%s",c);
Könnte mir bitte jemand sagen, was genau ich falsch mache, oder mir einen anderen Ansatz vorstellen?