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