Struktur-Alignment

Gast #6687280
Lesenswert?
• ▲
▼
Hallo,
eine Frage an den Experten. Bezieht sich der folgende Ausdruck nur auf 
den Start der Struktur oder auf jeden Member?

typedef struct attribute((aligned))

Internet:
struct S { short f[3]; } attribute ((aligned (8)));

"force the compiler to insure (as far as it can) that each variable
whose type is struct S will be allocated and aligned at least on a
8-byte boundary."

Aber wie verhält es sich in diesem Fall:
struct S { short f1[3];
           short f2[3];} attribute ((aligned (8)));

Wo kommt f2 zu liegen? Wird innerhalb der Struktur auf das alignment 
aufgefüllt oder nur am Ende?
#6687520
Lesenswert?
• ▲
▼
Ratloser schrieb:
> Bezieht sich der folgende Ausdruck nur auf
> den Start der Struktur oder auf jeden Member?
>
> typedef struct attribute((aligned))

Das bezieht sich auf die Struktur, wo diese beginnt.


Ratloser schrieb:
> Wo kommt f2 zu liegen? Wird innerhalb der Struktur auf das alignment
> aufgefüllt oder nur am Ende?

Das hat nichts mit oberem zu tun, das was du hier meinst wäre:
1
struct __attribute__ ((__packed__))

https://gcc.gnu.org/onlinedocs/gcc-4.0.4/gcc/Type-Attributes.html

Bsp.
1
// Hier werden hinter "a" 3-Byte leer gelassen.
2
struct S
3
{
4
   uint8_t a;
5
   uint32_t b;
6
};
7

8
// Hier folgt b direkt hinter a
9
struct S
10
{
11
   uint8_t a;
12
   uint32_t b;
13
} __attribute__ ((__packed__));

Antwort schreiben

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.

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.