#include <stdio.h>
#include <string.h>
int sum(int x, int y) { return x+y; }
int dif(int x, int y) { return x-y; }
void(*GetFunc(const char *name))() {
if (!strcmp(name,"sum")) { return (void(*)())sum; }
if (!strcmp(name,"dif")) { return (void(*)())dif; }
return (void(*)())0;
}
int main() {
int x, y;
int(*Sum)(int,int);
int(*Dif)(int,int);
*((void(**)())&Sum) = GetFunc("sum");
*((void(**)())&Dif) = GetFunc("dif");
x = 3;
y = 1;
printf("%i <sum> %i = %i\n", x, y, Sum(x, y));
printf("%i <dif> %i = %i\n", x, y, Dif(x, y));
return 0;
}