#include <stdio.h>

extern int var;
extern void (*func_ptr)(void);
extern void print_var (void);
extern void print_foo (void);
extern int foo;
extern int var2[2];

typedef struct
{
  int *   var;
  void (* func_ptr)(void);
  int *   var_with_offset;
}
TEST;

TEST xyz = { & var, print_var, & var };

const TEST const_xyz = { & var, print_var, & var };

int
main (void)
{
  print_var ();

  printf ("We see var = %d\n", var);
  printf ("Setting var = 456\n");

  var = 456;

  print_var ();
  printf ("We see var = %d\n\n", var);

  var = 90;
  print_var ();
  printf ("We see var = %d\n\n", var);

  print_foo ();
  printf ("We see foo = %d\n", foo);
  printf ("Setting foo = 19\n");
  foo = 19;
  print_foo ();
  printf ("We see foo = %d\n\n", foo);
  fflush (stdout);

  printf ("Calling dllimported function pointer\n");
  func_ptr ();

  printf ("Calling functions using global structure\n"); 
  xyz.func_ptr ();
  * xyz.var = 40;
  xyz.func_ptr ();

  printf ("We see var2[0] = %d\n\n", var2[0]);

  printf ("We see const xyz %x %x\n", const_xyz.var, const_xyz.var_with_offset);

  return 0;
}
