Раз пошла такая пьянка, то вот пример, как хорошо было жить без управляемого кода.
Вполне допустимо по изначальным стандартам Си и правильно компилируется gcc.
Код
#include<stdio.h>
#include<stdlib.h>
w1(d1)
{
printf("Helo, int %d\n", d1);
}
long w2(d1, d2)
{
printf("Helo, long %d\n", d1);
return(0);
}
double w3(d1, d2, d3)
{
printf("Helo, double %d\n", d1);
return(0.);
}
w4()
{
exit(1);
}
int ReadCode[4];
Fill()
{
ReadCode[0]=(int)w1;
ReadCode[1]=(int)w2;
ReadCode[2]=(int)w3;
ReadCode[3]=(int)w4;
}
int pc;
Step()
{
int(*fword)();
fword = (int(*)())ReadCode[pc];
pc++;
fword(1, 2);
}
main()
{
Fill();
pc=0;
while(1) Step();
}