Pointer auf Funktion in einem Struct ablegen

OP #608625
Lesenswert?
• ▲
▼
Hallo,

ich bin leider gerade völlig im Zeigerwirrwarr gefangen - vielleicht 
kann mir wer da raushelfen ;-)

Ich möchte in einer Struktur einen Zeiger auf eine Funktion ablegen und 
später dann bei Auslösung einer ISR die Funktion anhand des abgelegten 
Zeigers aufrufen. Ich brauche das für eine recht komplexe Ansteuerung 
des CAN-Controllers im AT90CAN128.

Als Beispiel:
1
typedef struct
2
{
3
   // Hier Zeiger auf Funktion speichern
4
} Strukur_t;
5

6
Struktur_t MeineStruktur;
7

8
// Funktion die in der ISR aufgerufen werden muss
9
void Action (void)
10
{
11
   // ...   
12
}
13

14
// Interrupt Service Routine
15
ISR (CANIT_vect)
16
{
17
   // Hier die Funktion anhand des in der Struktur "MeineStruktur" abgelegten Zeigers aufrufen
18
}
19

20
int main (void)
21
{
22
   // Zeiger auf "Action()" in "MeineStruktur.Zeiger" ablegen
23
}

Sorry, dass es so ein "bitte programmiert mir das mal" Beitrag ist. Mit 
einfachen Zeigern kann ich umgehen, aber ich habe leider Null Erfahrung 
mit Zeigern auf Funktionen und konnte bisher auch noch nichts finden, 
was mir wirklich bei meinem Problem weitergeholfen hat. Ich bekomme den 
Funktionszeiger einfach nicht in die Struktur und in der ISR klappt der 
Aufruf nicht. Ich könnte hier schreiben,w as ich alles probiert habe, 
aber ich denke das verkompliziert die Sache nur noch mehr...

Bin sehr dankbar, wenn mir jemand da Unterstützung geben kann!
Persönliche Seite #608632
Lesenswert?
• ▲
▼
André Wippich wrote:
> Sorry, dass es so ein "bitte programmiert mir das mal" Beitrag ist. Mit
> einfachen Zeigern kann ich umgehen, aber ich habe leider Null Erfahrung
> mit Zeigern auf Funktionen und konnte bisher auch noch nichts finden,
> was mir wirklich bei meinem Problem weitergeholfen hat.

Echt nicht?
http://www.google.de/search?q=function+pointer

Alternativ gibts dazu auch schon diverse Threads in diesem Forum.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.