mikrocontroller.net

Forum: PC-Programmierung bitfields, anon struct und union


Autor: Random ... (thorstendb) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin Leutz,


kann man eigentlich eine struktur/union/mixed aufsetzen, so dass 
folgender Zugriff möglich wird?

val = 0x12;
val.foo = 0x01;
val.bar = 0x02;

Ich habe einiges mit structs und unions herumprobiert, komme aber zu 
keiner Lösung.


VG,
/th.

Autor: eklige Tunke (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In etwa so?
#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>

typedef union {
        struct {
                uint8_t bar:4;
                uint8_t foo:4;
        }fb;
        uint16_t foobar;
}datas;

int main ( int argc, char* argv[] ){
        datas myData;
        myData.foobar=0x47;
        printf("foobar = %x foo = %x bar = %x\n",myData.foobar, myData.fb.foo, myData.fb.bar);

        return 0;
}

Autor: Gerhard (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo
wie wärs hiermit:


union SHORT2BYTE{
 short s;
 BYTE  c[2];
};

union SHORT2BYTE sb;
BYTE c1, c2;

sb.s = 12;
c1 = c[0];
c2 = c[1];

Gerhard

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Random ... schrieb:
> Moin Leutz,
>
>
> kann man eigentlich eine struktur/union/mixed aufsetzen, so dass
> folgender Zugriff möglich wird?
Z.B. mit GNU GCC ja, sonst nein. GCC kann (oder konnte?) mal anonyme 
Alternativen.

Autor: Random ... (thorstendb) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> printf("foobar = %x foo = %x bar = %x\n",myData.foobar, myData.fb.foo, 
myData.fb.bar);

Jep, nur mit dem Unterschied, dass ich das so schreiben kann:

printf("foobar = %x foo = %x bar = %x\n",myData.foobar, 
myData.foobar.foo, myData.foobar.bar);


VG,
/th.

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.