Funktionspointer in Array aus Structs. Wie Funktionen ausführen?!



  • Hallo,

    ich habe ein Problem.
    Und zwar möchte ich in einem Array von Strukturen Modi sowie Funktionspointer speichern.
    Jedoch finde ich keine Lösung zur Übergabe der Funktionsadressen und dem anschließenden Ausführen der dahinter verborgenen Funktionen.

    struct s_template_softTimer_DB{
      UINT8 ui8_mode;
      void (*callback)(void);
    };
    
    struct s_template_softTimer_DB sa_softTimer_DB[__maxDB_Size];
    
    UINT8 ui8softTimer_notify (void (*callback_)(void)){
      sa_softTimer_DB[_anyNumber]->callback = callback_; // Error: Expression must have pointer type
      return 0;
    }
    
    void  softTimer_cyclic(void){
      // callback
      sa_softTimer_DB[_anyNumber].(*callback)(); // Error: Expected a field name
    }
    
    void testfunc_1(void){
     ui8softTimer_notify (__ST_MODE_ONCE, 100, &testfunc_2()); // Error: Expression must be an lvalue or a function designator
    }
    
    void testfunc_2(void){
    // ... anything
    }
    

    Über einen Wink mit einem Zaunpfal würd ich mich sehr freuen!



  • UINT8 ui8softTimer_notify(void(*callback_)(void))
    {
    	sa_softTimer_DB[_anyNumber].callback = callback_;
    	return 0;
    }
    
    void softTimer_cyclic() 
    {
    	(*sa_softTimer_DB[_anyNumber].callback)();
    }
    
    void testfunc_1()
    {
    	ui8softTimer_notify(&testfunc_2);
    }
    


  • Wie simpel es doch sein kann....
    Danke!


Anmelden zum Antworten