view CbC-examples/tmp4.c @ 144:8f4e72ab4e11

fix segmentation fault caused by nothing next cur_op to end
author Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
date Sun, 23 Dec 2018 21:23:56 +0900
parents 5d30d517ebed
children
line wrap: on
line source

#define __environment _CbC_environment
#define __return _CbC_return

#include "stdio.h"

int main0(int ac, char *av[]);
__code code0( int i,int j,int k, char *av[], __code (*ret)(), void *retenv);
__code code1( int i,int j,int k, char *av[], __code (*ret)(), void *retenv);
__code code2( int i,int j,int k, char *av[], __code (*ret)(), void *retenv);

int
main(ac,av)
int ac;
char *av[];
{
    int i;
    i=main0(ac,av);
    fprintf(stdout,"#0012:1: %s %d\n",av[0]+2,i);
    return 0;
}

int
main0(ac,av)
int ac;
char *av[];
{
    int i,j,k;
    i=123;
    j=456;
    k=789;
    fprintf(stdout,"#0025:2: %s\n",av[0]+2);
    goto code0(i,j,k,av,__return,__environment);
}

__code code0(i,j,k,av,ret,retenv)
int i,j,k;
char *av[];
__code (*ret)();
void *retenv;
{
    char *p;
    p = av[0]+2;
    fprintf(stdout,"#0037:3: i=%d j=%d k=%d av[0]=%s p=%s\n",i,j,k,av[0]+2,p);
    goto code1(i,j,k,av,ret,retenv);
}

__code code1(i,j,k,av,ret,retenv)
int i,j,k;
char *av[];
__code (*ret)();
void *retenv;
{
    fprintf(stdout,"#0047:4: %s\n",av[0]+2);
    goto code2(i,j,k,av,ret,retenv);
}

__code code2(i,j,k,av,ret,retenv)
int i,j,k;
char *av[];
__code (*ret)();
void *retenv;
{
    fprintf(stdout,"#0057:5: %s\n",av[0]+2);
    fprintf(stdout,"#0058:5: i=%d j=%d k=%d\n",i,j,k);
    goto (*ret)(1234,retenv);
}