Bitfeld-Array -> Problem mit Struct

Gast #1293947
Hallo zusammen,

ich hab ein kleines Problem: Ich möchte ein paar Daten in einem 
Nibble-Array Packen und habe versucht das ganze per struct in eine 
Variable zu Packen:
1
struct _DataP
2
{
3
  U8     deviceID;
4
  unsigned char   Sign:4;
5
  unsigned char  Norm:4;
6
  unsigned char  Data[8]:4;  // 8 Nibble die man so ansprechen kan DataP.Data[0-7] 
7

8

9
}DataP;

jetzt meckert aber mein GCC mit "bitfield 'Data' has invalied typ"

Ich muss aber die Nibble einzeiln per Variable auslesen können zb 
DataP.Data[i].

Gibts da noch ne andere möglichkeit?

Was passiert eigentlich wenn ich ein Nibble mit so einem Inhalt 0b0001 
nach rechts shifte? Wird die 1 dann ins nächste Nibble geschoben oder 
wird der Nibble einfach 0x00?

grüßle
Gast #1294374
..aber du könntest ein array eines bitfeld structes anlegen...

und warum machst du dieses nicht so:
struct _Nibble
{
    uint8_t      nibble:4;
}Nibble;

struct _DataP
{
  U8     deviceID;
  unsigned char   Sign:4,
                  Norm:4;
  Nibble          Data[8];  // 8 Nibble die man so ansprechen kan
}DataP;

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 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.