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