1#include <stdio.h>
2
3extern int var;
4extern void (*func_ptr)(void);
5extern void print_var (void);
6extern void print_foo (void);
7extern int foo;
8extern int var2[2];
9
10typedef struct
11{
12  int *   var;
13  void (* func_ptr)(void);
14}
15TEST;
16
17TEST xyz = { &var, print_var };
18
19int
20main (void)
21{
22  print_var ();
23
24  printf ("We see var = %d\n", var);
25  printf ("Setting var = 456\n");
26
27  var = 456;
28
29  print_var ();
30  printf ("We see var = %d\n\n", var);
31
32  var = 90;
33  print_var ();
34  printf ("We see var = %d\n\n", var);
35
36  print_foo ();
37  printf ("We see foo = %d\n", foo);
38  printf ("Setting foo = 19\n");
39  foo = 19;
40  print_foo ();
41  printf ("We see foo = %d\n\n", foo);
42  fflush (stdout);
43
44  printf ("Calling dllimported function pointer\n");
45  func_ptr ();
46
47  printf ("Calling functions using global structure\n");
48  xyz.func_ptr ();
49  * xyz.var = 40;
50  xyz.func_ptr ();
51
52  printf ("We see var2[0] = %d\n\n", var2[0]);
53
54  return 0;
55}
56