Funktionszeiger Funktion übergeben
-
Hollo zusammen
Ich möchte einer Funktion "Open" einen Funktionszeiger mitgeben. Der Funktionszeigerprototyp sie so aus:
int (*fp)(int,int,int,void*,int,int)
Ich möche eigendlich nur den Pointer der Funktion mitgeben ohne alle Parameter, da ich die in der Funktion "Open" fülle und die fp anschliessen ausführe.
Ich habe es mit
void open(int (*fp)());
versucht, leider erfolglos. Weiss jemand wie ich das machen muss?
-
Problem gelöst, war ein kleiner Programmierfehler meinerseits...
Habe ein Semikolon zu viel geschrieben!
-
Das wird so aber nicht das gewünsche ergebnis liefern oder?
ich kenne das sovoid fb(int a, int b) { //code } void open((void)(*p_fb)(int,int)) //statt p_fb kann auch fb geschrieben werden, da lokale // namen innerhalb des blocks den gleichnamigen globalen namen vorrangig sind { int x=24; int y=25; p_fb(x,y); } int main() { void (*p_fb)(int,int)=fb; //Zeiger auf Funktion open(p_fb); //den Zeiger übergeben return 0; }
-
Bei mir hat es funktioniert...
int testFunk(int,int,*void,int,int,int) { ; } //Ohne Parameter für fp void vFunktion(int (*fp)()) { int (*Funk)(int,int,*void,int,int,int)=fp; Funk(1,2,0,3,4,5); } int main(void) { int (*Funk)(int,int,*void,int,int,int)=testFunk; vFunktion(vFunktion); retunr 0; }
-
int testFunk(int,int,*void,int,int,int) { ; } //Ohne Parameter für fp void vFunktion(int (*fp)()) { int (*Funk)(int,int,*void,int,int,int)=fp; Funk(1,2,0,3,4,5); } int main(void) { vFunktion(testFunk); return 0; }
Bessere lösung...