Forum: Mikrocontroller und Digitale Elektronik Rückgabe von sizeof() bei einer Struktur


von brechbunkt (Gast)


Lesenswert?

Hallo,

in meinem Code habe ich nachfolgende Struktur:
1
struct can_frame {
2
         __u32   can_id;
3
         __u8    can_dlc;
4
         __u8    data[8] __attribute__((aligned(8)));
5
};

Wenn ich nun sizeof(frame) aufrufe, erhalte ich als Ergebnis den Wert 
16. Meiner Meinung nach hätte ich aber den Wert 13
("4 Byte für _u32"  +  "1 Byte für _u8"  +  "8*1 Byte für _u8[8]")
erhalten müssen. Kann mir jemand bitte sagen wo mein Denkfehler ist?

Danke für Tipps.

von SeriousSam (Gast)


Lesenswert?

__attribute__((aligned(8))) ist der Schlüssel. Zwischen can_dlc und dem 
array werden 3 bytes gepadded.

von brechbunkt (Gast)


Lesenswert?

hmm... ok, danke für die Antwort.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.