/* GCC y la alineación de campos en estructuras
 * Ernesto Hernández-Novich <emhn@usb.ve>
 * CI3641 Lenguajes de Programación I
 */

#include <stdio.h>
#include <stddef.h>

typedef struct meta {
  int    foo;
  char   bar[2];
  _Bool  baz;
  int    qux; 
  double meh;
}
   /* __attribute__ ((packed))  */
meta;

#define OFF(t,f) printf("\toffset(%s) = %d\n","f",offsetof(t,f));

void main(int argc,char **argv) {
  meta grok;

  printf("sizeof(grok) = %d\n", sizeof(grok));
  printf("Offsets\n");
  OFF(meta,foo);
  OFF(meta,bar);
  OFF(meta,baz);
  OFF(meta,qux);
  OFF(meta,meh);
}