#include 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; }