#include #define code __code #define __return _CbC_return typedef code (*NEXT)(int,void*); int main(int argc, char **argv) ; int factor(int x) ; code factor0(int prod,int x,NEXT next) ; code print_fact(int value) ; int main(int argc, char **argv) { int i,a; i = atoi(argv[1]); a = factor(i); printf("%d! = %d\n", a); } int factor(int x) { goto factor0(1, x, __return); } code factor0(int prod,int x,NEXT next) { if (x >= 1) { goto factor0(prod*x, x-1, next); } else { goto (*next)(prod,NULL); } }