diff struct-interface.c @ 3:f03bba45ae77

*** empty log message ***
author kinjo
date Sun, 11 Dec 2005 21:46:14 +0900
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/struct-interface.c	Sun Dec 11 21:46:14 2005 +0900
@@ -0,0 +1,45 @@
+// interfaceに1つだけのstructを使う
+#include"my-stdio.h"
+#define USE_BREAKP
+#include"dbg.h"
+
+struct interface {
+    int a;
+    int b;
+    float c;
+    int d;
+    code (*ret)(int);
+    void *env;
+} intf;
+
+code
+testexit(struct interface *i)
+{
+    goto i->ret(0),i->env;
+}
+
+code
+printit(struct interface *i)
+{
+    BREAKP(printit,i);
+    printf("%d %d %f %d\n",i->a,i->b,i->c,i->d);
+    goto testexit(i);
+}
+
+code
+test0(struct interface *i)
+{
+    i->a=10;
+    i->b=20;
+    i->c=30;
+    i->d=40;
+    goto printit(i);
+}
+
+int
+main()
+{
+    intf.ret=return;
+    intf.env=environment;
+    goto test0(&intf);
+}