2002-12-18 17:05:10 +01:00
|
|
|
#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);
|
2007-10-02 14:47:08 +02:00
|
|
|
int * var_with_offset;
|
2002-12-18 17:05:10 +01:00
|
|
|
}
|
|
|
|
TEST;
|
|
|
|
|
2007-10-02 14:47:08 +02:00
|
|
|
TEST xyz = { & var, print_var, & var };
|
|
|
|
|
|
|
|
const TEST const_xyz = { & var, print_var, & var };
|
2002-12-18 17:05:10 +01:00
|
|
|
|
|
|
|
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]);
|
|
|
|
|
2007-10-02 14:47:08 +02:00
|
|
|
printf ("We see const xyz %x %x\n", const_xyz.var, const_xyz.var_with_offset);
|
|
|
|
|
2002-12-18 17:05:10 +01:00
|
|
|
return 0;
|
|
|
|
}
|