#include <stdint.h>
#include <stdio.h>
typedef union {
uint64_t u[2];
struct {
uint64_t a:30;
uint64_t b:30;
uint64_t c:30;
uint64_t d:30;
uint64_t e:8;
}x;
} mystruct;
int main()
{
printf("Size %d\n", sizeof(mystruct));
}
Sto provando a compilarlo su una macchina a 64 bit. L'uscita prevista era 16 ma ottengo 24. So che qualche allineamento è successo qui ma non sono sicuro del perché la struct x è esattamente 16 byte. Qualcuno può spiegarlo. Graziesizeof non mostra l'output previsto
Si utilizza campi di bit: K & R Pagina 150: *" Quasi tutto ciò che riguarda i bitfield dipende dall'implementazione "*. Personalmente avrei omesso il "Quasi". – cdarke
@cdark dicono * quasi * perché il resto non è specificato;) – ouah