-         

Ergebnis 1 bis 2 von 2

Thema: Zeiger auf Funktionen

  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.05.2005
    Ort
    Stuttgart
    Beiträge
    260

    Zeiger auf Funktionen

    Anzeige

    Hio. Ich brauch mal wieder eure Hilfe . Ich bin gerade auf der Suche nach einem Tutorial in dem erklärt wird wie man in C Zeiger welche auf Funktionen zeigen erstellt – damit ich über die Zeiger eine Funktion aufrufen kann. Nur find ich im Moment nichts rechtes. Kann mir vielleicht jemand hier im Forum weiterhelfen? Ein kleines Programmbeispiel, mehr brauch ich nicht. Danke!

    Gruß
    Lutz

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.801
    So was?

    func wird gecastet auf eine void func(uint8_t) und aufgerufen mit Argument
    uint8_t arg:

    Code:
    ((void(*)(uint8_t)) func) (arg);
    func ist ein Funktionszeiger:
    Code:
    void (*func)(uint8_t);
    func ist ein Array von 4 Funktionszeigern:
    Code:
    void (*func[4])(uint8_t);
    //oder
    typedef void (*func_t)(uint8_t);
    func_t func[4];
    foo ruft func auf:
    Code:
    void foo (void (*func)(uint8_t), uint8_t arg)
    {
    	func (arg);
    }
    Code:
    typedef struct
    {
    	// job-Funktion, Prototyp void foo(void) oder void foo (uint8_t)
    	void* job;
    	uint8_t arg;
    } job_t;
    
    #define NUM_JOBS 7
    
    static const job_t jobs[NUM_JOBS] PROGMEM =
    {
    	{job_foo, CONST_0},
    	...
    };
    
    // dispatcher
    
    	uint8_t num;
    	...
    	uint16_t job = pgm_read_word (& jobs[num].job);
    	uint16_t arg = pgm_read_byte (& jobs[num].arg);
    		
    	((void(*)(uint8_t)) job) (arg);
    	...
    Disclaimer: none. Sue me.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •