Hallo,
ich habe eine Verständnisfrage zu Funktionspointern innerhalb eines
structs.
Beipiel:
1 | typedef struct sKanaleinstellungen
|
2 | {
|
3 | uint_8 uPower;
|
4 | uint_8 uFreq;
|
5 | uint_8 uWav;
|
6 | (void*) pFunction;
|
7 | uint_8 uFunctionwert1;
|
8 | uint_8 uFunctionwert2;
|
9 | uint_8 uFunctionselect;
|
10 | } tsKanaleinstellungen;
|
11 |
|
12 | void Timer(uint_8 Wert1, uint_8 Wert2)
|
13 | {
|
14 | //mach irgendwas
|
15 | }
|
16 |
|
17 | void Zaehler(uint_8 Wert1, uint_8 Wert2, uint_8 Wert3)
|
18 | {
|
19 | //mach was anderes
|
20 | }
|
21 |
|
22 | void main(void)
|
23 | {
|
24 | // Kanäle einrichten
|
25 | tsKanaleinstellungen Kanal1, Kanal2;
|
26 |
|
27 | // Funktionszuweisung
|
28 | Kanal1.pFunction = Timer;
|
29 | Kanal2.pFunction = Zaehler;
|
30 |
|
31 | // Funktionen ausführen
|
32 | Kanal1.pFunction(12, 44);
|
33 | Kanal2.pFunction(66, 129, 3);
|
34 | }
|
Würde das funktionieren, oder muß ich im struct festlegen, ob und
wieviele Parameter die Funktion hat ?
Momentan bekomme ich den WinAVR irgendwie nicht zum laufen, aber ich
möchte ja wissen wie es einwandfrei in C aussehen müßte ;)
Weil es wäre sehr schön und universell, wenn ich es so nehmen könnte.
Da C auch uneingeschränkte Parameterübergabe unterstützt habe ich mir
das so gedacht.
Geht das oder bin ich komplett auf der falschen Schiene gelandet ?
Danke,
Hobbytroniker