DelphiKing
King with a crown
- 20 April 2006
- 6.553
- 729
Aloha,
darf mich im Zuge von Microcontroller-Programmierung mit C befassen und stehe vor einem nervigen Fehler, den ich nicht finde
Folgender (gekürzter) Code, der Zeiger auf Funktionen in einem Array speichert und diese Funktionen dann über die Zeiger zu gegebenem Anlass aufruft (z.B. wenn ein Intervall verstrichen ist):
Ich habe Ewigkeiten rumprobiert und nachgelesen, aber nie etwas funktionierendes hinbekommen - irgendwo hab ich wohl einen Syntaxfehler, der ein anderes als das gewünschte Verhalten provoziert ... bin halt nicht so fit in C, bin inzwischen eher C# gewöhnt und mach da auch nix mit Zeigern
Es wird einfach die Funktion test() nicht aufgerufen ...
Dass der Code so wie er da steht, ziemlich sicher falsch ist, ist mir klar... ich habe eben hier mal einen Zeiger hingemacht und dort wieder weg etc ... weil es so, wie ich es mir überlegt hatte, leider nicht ging. Dann kam noch hinzu, dass völlig wirre Dinge passieren, wenn ich "()" hinter den Fktsname. setze - scheint ja ein Unterschied zu sein x_x
Hat irgendwer Ahnung?
Lg, flo
darf mich im Zuge von Microcontroller-Programmierung mit C befassen und stehe vor einem nervigen Fehler, den ich nicht finde

Folgender (gekürzter) Code, der Zeiger auf Funktionen in einem Array speichert und diese Funktionen dann über die Zeiger zu gegebenem Anlass aufruft (z.B. wenn ein Intervall verstrichen ist):
PHP:
// Struktur die Zeiger auf Funktionen und Aufrufintervalle speichert
typedef struct {
int interval;
void (*fct)(void);
} cb_TimedFct;
cb_TimedFct TimedFunctions[10]; // Array der Struktur
// Funktion hinzufügen
int addFunction(void(*_fct)(void), int _interval) {
// Werte ins Array speichern (vereinfacht: an Pos "1")
TimedFunctions[1].interval = _interval;
TimedFunctions[1].fct = _fct; // muss hier ein (*_fct) stehen?
//...
}
// Timer-Funktion (die durch irgendwas aufgerufen wird), führt alle Fkt. aus
void Timer() {
int i;
for (i=0; i<10;i++) {
// Fkt. aufrufen
TimedFunctions[i].fct(); // mit Klammern ()? Mit (*...) ? Mit (&...)?
}
}
void test(void) {
// Code der irgendwas macht/ausgibt/...;
}
int main(void) {
// Funktion "test" zum Fkt-Array hinzufügen
addFunction(test, 500); // mit (*...)? Mit Klammern ()?
}
Ich habe Ewigkeiten rumprobiert und nachgelesen, aber nie etwas funktionierendes hinbekommen - irgendwo hab ich wohl einen Syntaxfehler, der ein anderes als das gewünschte Verhalten provoziert ... bin halt nicht so fit in C, bin inzwischen eher C# gewöhnt und mach da auch nix mit Zeigern
Es wird einfach die Funktion test() nicht aufgerufen ...
Dass der Code so wie er da steht, ziemlich sicher falsch ist, ist mir klar... ich habe eben hier mal einen Zeiger hingemacht und dort wieder weg etc ... weil es so, wie ich es mir überlegt hatte, leider nicht ging. Dann kam noch hinzu, dass völlig wirre Dinge passieren, wenn ich "()" hinter den Fktsname. setze - scheint ja ein Unterschied zu sein x_x
Hat irgendwer Ahnung?
Lg, flo