zahada delky struktury GCC

Jan Waclawek konfera na efton.sk
Pondělí Březen 11 21:09:33 CET 2024


sizeof(
typedef struct {
  uint8_t  a;
  uint8_t  b;
  uint16_t c;
  uint32_t d;
  double   x;
};
) = 16 takze asi to zarovnanie co ste pisali.

Tak som vyskusal aj

sizeof(
typedef struct {
  double   x;
  uint8_t  a;
  uint8_t  b;
  uint16_t c;
  uint32_t d;
};
) = 16 

Hm.

Ako vravim, ja nepoznam presne tie pravidla propagacie toho zarovanania, a
ani ich nechcem poznat.

sizeof(
typedef struct {
  uint8_t  a;
  uint8_t  b;
  double   x;
  uint16_t c;
  uint32_t d;
};
) = 24

Ale to sa dalo cakat. Takze v ramci jedneho struct sa zarovnavaju tie
premenne na svoju sirku. Mozno ten union v tom ma prsty... mozno nie. Fakt
netusim.

Ale k tomu gcc je k dispozicii aj ta najkompletnejsia dokumentacia...
(pozdravujem pravovernych Linuxakov ;-) )

wek



----- Original Message ---------------
>Dekuji za vysvetleni, clovek se stale neco uci... to same se tyka i int64_t?
>
>A kdyz budu mit
>
>struct {
>     uint8_t    a;
>     uint8_t    b;
>     uint16_t c;
>     uint32_t d;
>     doube    x;
>}
>
>tak to bude na jakych offsetech ? Zatim bych cekal 0, 1, 2, 4, 8
>
>A to zarovnani na 8 se pak tyka cele struktury?
>
>No budu to muset prozkoumat.
>



Další informace o konferenci Hw-list