Struktur Alignment C

Gast #4547447
Lesenswert?
• ▲
▼
1
char buf[4096] __attribute__ ((aligned(__alignof__(struct ivi_event))));

Hallöchen.

Ich fand den obigen Code anfänglich etwas sperrig und wusste nicht, was 
es damit auf sich hat.

Nach etwas Lektüre weiss ich nun, dass
1
 __attribute__ ;

"allows you to specify special attributes of variables or structure 
fields"

und
1
__alignof__ ;

"allows you to inquire about how an object is aligned;"

bedeuten.

Zu aligned() habe ich nichts gefunden, aber leite mal her, dass dies 
eine Art automatisches Padding bewirkt?! Kann das?
Persönliche Seite #4547606
Lesenswert?
• ▲
▼
Das ist eine compilerabhängige Erweiterung. Um zu verstehen, was das 
macht, musst Du Dir die Dokumentation Deines Compilers für Deine 
Zielhardware ansehen.

Das sieht sehr nach gcc aus:

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

Und die Kombination aus alignof und aligned lässt annehmen, daß das 
bedeutet, daß "buf" das gleiche Alignment erhalten soll wie die 
Struktur "ivi_event".
Gast #4547692
Lesenswert?
• ▲
▼
>Und die Kombination aus alignof und aligned lässt annehmen, daß das
>bedeutet, daß "buf" das gleiche Alignment erhalten soll wie die
>Struktur "ivi_event".

Genauso verhält es sich.

>https://gcc.gnu.org/onlinedocs/gcc-3.3/gcc/Type-At...

Habe ich überlesen...

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."

Wer lesen kann, ist klar im Vorteil!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren