view test/tmp7.c @ 33:8500dbb69dd9

bad macro processing. give up this method.
author kono
date Sun, 09 Feb 2003 23:17:23 +0900
parents ca0bce3b4810
children 412ad2e6c2a2
line wrap: on
line source



int k=3;

struct aa { int a[100]; } aaa,bbb;

void tmp(void);

struct aa
main0();

struct aa
main0()
{
    struct aa ccc;
    ccc.a[55]=123;
    return ccc;
}

void
main2(struct aa a1)
{
	printf("main2 a1.a[99] %d\n",a1.a[99]);
	printf("main2 a1.a[55] %d\n",a1.a[55]);
}

void
main1(struct aa a1)
{
    printf("main1 a1.a[0] %d\n",a1.a[0]);
    a1.a[55]=44;
    if (a1.a[0]) 
	main2(a1);
    else
	main2(aaa);
} 


main(ac,av)
int ac;
char *av[];
{
    register int i;
    register char *p;
    int j = 3;
    struct { int b; void (*c)(struct aa); } q = {3,main1},r;

    j = 3;

    bbb = main0();
    j = main0().a[55];
    printf("%d==3\n",q.b);
    r = q;
    printf("%d==3\n",r.b);
    (*r.c)(aaa);
    printf("main aaa.a[55] %d\n",aaa.a[55]);
    bbb.a[0]=44; 
    aaa = bbb;
    aaa.a[99]=55;  /* core dump? */
    (*r.c)(aaa);
    printf("main aaa.a[55] %d\n",aaa.a[55]); 
    p = av[0];
    if (!p) return;
    i = p[1];
    p = p+i;
    printf("%d %s\n",i,p-i);
}

void
tmp()
{
}