61 lines
1.1 KiB
C
61 lines
1.1 KiB
C
|
#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;
|
||
|
}
|