mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Bitfelder innerhalb eines Struct


Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich würde gerne ein Struct definieren, welches zwei Bytes mit Bitfeldern 
enthält. Leider funktioniert folgender Code nicht:
typedef struct my_struct
{
  typedef struct
  {
    char byte_1_bit_1_4 : 4,
         byte_1_bit_5_8 : 4;
  } byte_1;

  typedef struct
  {
    char byte_2_bit_1_6 : 6,
         byte_2_bit_7_8 : 2;
  } byte_2;
} my_struct;

my_struct test;
test.byte_2.byte_1_bit_1_4 = 12;

Danke im Voraus!

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
schon mal so probiert?
typedef struct my_struct
{
  struct
  {
    char byte_1_bit_1_4 : 4,
         byte_1_bit_5_8 : 4;
  } byte_1;

  struct
  {
    char byte_2_bit_1_6 : 6,
         byte_2_bit_7_8 : 2;
  } byte_2;
} my_struct;

my_struct test;
test.byte_1.byte_1_bit_1_4 = 12;

Edit: beim Test byte_2 zu byte_1 geändert...

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kompiliert leider auch nicht. :-(

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das kompiliert bei mir:
typedef struct my_struct
{
  struct
  {
    char byte_1_bit_1_4 : 4,
         byte_1_bit_5_8 : 4;
  } byte_1;

  struct
  {
    char byte_2_bit_1_6 : 6,
         byte_2_bit_7_8 : 2;
  } byte_2;
} my_struct;


int main( int nargs, char **args )
{
  my_struct test;
  test.byte_1.byte_1_bit_1_4 = 12;

  return 0;
}

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Martin schrieb:
> Kompiliert leider auch nicht. :-(

das ist ja auch keine brauchbare Fehlerbeschreibung.
Was erwartest du jetzt? Daß jemand vorbei kommt und nachsieht?

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank!

Es hatte sich nur ein dummer kleiner Fehler bezüglich Groß- und 
Kleinschreibung eingeschlichen...

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.