PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Zeiger auf Funktionen



luma
30.10.2005, 12:45
Hio. Ich brauch mal wieder eure Hilfe 8). 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

SprinterSB
30.10.2005, 13:08
So was?

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


((void(*)(uint8_t)) func) (arg);

func ist ein Funktionszeiger:

void (*func)(uint8_t);

func ist ein Array von 4 Funktionszeigern:

void (*func[4])(uint8_t);
//oder
typedef void (*func_t)(uint8_t);
func_t func[4];

foo ruft func auf:


void foo (void (*func)(uint8_t), uint8_t arg)
{
func (arg);
}



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);
...