struct test_empty {
} e;
int Esize = sizeof(e);

struct rtx_def {
  unsigned short code;
  long long :3;
  int mode : 8;
  long long :0;
  long long x :31;
  long long y:31;
} N = {2, 7, 1 }; int Nsize = sizeof(N);  // Size = 8

struct test1 {
  char x:1;
  long long :0;
} F1;  int F1size = sizeof(F1);  // Size = 4

struct test2 {
  long long x :4;
} F2;  int F2size = sizeof(F2);  // Size = 4

struct test3 {
  char x:1;
  long long :20;
} F3;  int F3size = sizeof(F3);  // Size = 3

struct test4 {
  char x:1;
  long long :21;
  short Y : 14;
} F4; int F4size = sizeof(F4);  // Size = 6

struct test5 {
  char x:1;
  long long :17;
  char Y : 1;
} F5; int F5size = sizeof(F5); // Size = 3

struct test6 {
  char x:1;
  long long :42;
  int Y : 21;
} F6; int F6size = sizeof(F6);  // Size = 8

struct test {
  char c;
  char d : 3;
  char e: 3;
  int : 0;
  char f;
  char :0;
  long long x : 4;
} M;   int Msize = sizeof(M);  // Size = 8

extern int printf(const char *str, ...);

int main() {
  printf("N: %d %d %d %d\n", N.code, N.mode, N.x, N.y);
  printf("F1: %d\n", F1.x);
  printf("F2: %d\n", F2.x);
  printf("F3: %d\n", F3.x);
  printf("F4: %d %d\n", F4.x, F4.Y);
  printf("F5: %d %d\n", F5.x, F5.Y);
  printf("F6: %d %d\n", F6.x, F6.Y);
  printf("M: %d %d %d %d %d\n", M.c, M.d, M.e, M.f, (int)M.x);
  
  return 0;
}
