mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik sizeof(struct_name) in union


Autor: Bill (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich dachte ich hätte sowas schonmal gemacht...
geht das nicht?? was tun?

danke!
typedef union{
  struct {
    unsigned char start_flag;
    unsigned char seq;
    unsigned char rec_id;
    unsigned char data[MAX_DATA];
    unsigned char check_sum;
    unsigned char stop_flag;
  } fields;
  unsigned char bytes[sizeof(fields)];
}Frame;

../datalink.c:48: error: 'fields' undeclared here (not in a function)


Autor: Ahem (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
An der Stelle ist ja die Strukturdeklaration abgeschlossen.

Man könnte d'rüber streiten, ob das der Compiler können sollte. Mir ist 
zwar nichts gegenteiliges bekannt, aber es könnte sein, das es nicht so 
ist.

Ein Ähnliches Problem tritt ja auch bei verlinkten Listen auf.

Ich würde also die struct erstmal deklarieren und anschliessen das 
typedef machen.

Etwa so:
  struct xyz{
    unsigned char start_flag;
    unsigned char seq;
    unsigned char rec_id;
    unsigned char data[MAX_DATA];
    unsigned char check_sum;
    unsigned char stop_flag;
  };

typedef union{
  struct xyz fields;
  unsigned char bytes[sizeof(struct xyz)];
}Frame;


Autor: Bill (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja klar das kann ich tun. ist halt nicht hübsch.
hast wahrscheinlich recht, der gcc kann das wohl nicht.

danke dir!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.