#include <stdio.h>
enum {POSITION,VELOCITY};
typedef struct { int x, y; } Position;
typedef struct { double x, y; } Velocity;
void P(Position*p){printf("Position %d %d\n",p->x,p->y);}
void V(Velocity*v){printf("Velocity %f %f\n",v->x,v->y);}
void (*func[])(void*)={P,V};
int main()
{
Position p={1,2};
Velocity v={3,4};
func[POSITION](&p);
func[VELOCITY](&v);
return 0;
}