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 so

    void 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...


Log in to reply