typedef struct...was wird da gemacht?

Gast #531137
Hi,
kann mir jemand mit einfachen Worten erklären warum ich überhaupt Struct 
brauche und was genau das hier aufgeführte typedef struct macht was in 
einer header datei stand? Habe mich durchs internet gekämpft aber nichts 
verständliches über struct oder typedef struct gefunden. Jetzt habe ich 
noch ne Frage, was bezweckt bei der #define Anweisung das (can_t*)?
Hoffe jemand hat die richtigen "einfachen" Worte um mir das kurz zu 
erklären.

Gruß Marco
1
typedef struct {
2
  IO_WORD  CTR;       
3
  IO_WORD  STATR;         
4
  IO_WORD  :16;
5
} can_t;
6

7
#ifdef CTR0
8
#  define CAN0  (can_t*) &CTR0
9
#endif
Gast #531141
@ Marco Blum

>kann mir jemand mit einfachen Worten erklären warum ich überhaupt Struct
>brauche und was genau das hier aufgeführte typedef struct macht was in
>einer header datei stand? Habe mich durchs internet gekämpft aber nichts

typdef definiert einen Datentyp. Der Datentyp enthält mehrere 
Bestandteile.

>verständliches über struct oder typedef struct gefunden. Jetzt habe ich
>noch ne Frage, was bezweckt bei der #define Anweisung das (can_t*)?

Bin ich mir nicht sicher. Muss ein Profi beantworten.

MfG
Falk
Gast #531142
>> Habe mich durchs internet gekämpft aber nichts verständliches
>> über struct oder typedef struct gefunden.

Das halte ich für ein Gerücht... Aber was solls:

typedef definiert einen neuen Datentypen, der sich ab sofort can_t
nennen darf und wie zu sehen aufgebaut ist (eben eine Struktur mit
unterschiedlichen Mitgliedern).

(can_t *) ist ein CAST und definiert einen Zeiger auf den soeben
definierten Datentypen can_t.
Gast #531172
Dann mal vielen Dank für eure Antworten das hat mir gut weitergeholfen. 
Ich hab jetzt nur noch eine Frage, was macht   (IO_WORD  :16;) ? Wozu 
ist der Doppelpunkt?
Gast #531178
Zunächst wäre erst einmal zu klären, was ein "IO_WORD" ist.
Das muß ebendfalls ein eigener Datentyp sein (Stichwort typedef).

Die :16 kennzeichnet ein Bitfeld mit der Größe 16.
Allerdings fehlt da meines Erachtens noch ein Bezeichner.
Kann ich aber nicht 100% sagen, da ich trotz vieler Jahre Programmierung
noch nie in die Verlegenheit gekommen bin so etwas zu benutzen
Gast #531192
Nachtrag: Wie ich mir grad mal angelesen habe, geht es auch ohne 
Bezeichner.
Der letzte Eintrag im Struct füllt also noch 16 Bits als Platzhalter 
auf.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 19 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.