diff test/call.c @ 482:8370ba6e8557

*** empty log message ***
author kono
date Sun, 11 Dec 2005 23:23:18 +0900
parents 32737bad7489
children 77cab9687d3f
line wrap: on
line diff
--- a/test/call.c	Sun Dec 04 14:19:25 2005 +0900
+++ b/test/call.c	Sun Dec 11 23:23:18 2005 +0900
@@ -6,37 +6,63 @@
 
 int (*conv)(int);
 
+int
 a0(int i)
 {
     return i+3;
 }
 
+int
 a1(int i)
 {
     return i-3;
 }
 
 
+int
 a2(int i,int conv(int))
 {
     return conv(i);
 }
 
+int
 a3(int i,int (*conv)(int))
 {
     return conv(i);
 }
 
+int
 a4(int i,int conv(int))
 {
     return (*conv)(i);
 }
 
-a5(int i,int (*conv)(int))
+static 
+int a5(int i,int (*conv)(int))
 {
     return (*conv)(i);
 }
 
+typedef int (*fptr)(int,int (*)(int));
+
+unsigned long addrs[]={
+     (unsigned long)&a0,
+     (unsigned long)&a5,
+     (unsigned long)a0,
+     (unsigned long)a5,
+     0,
+};
+
+fptr faddrs[]={
+     &a2,
+     &a5,
+     a2,
+     a5,
+     0,
+};
+
+
+
 main(int ac,char *av[]) {
     int j,k;
     conv = a0;
@@ -48,6 +74,15 @@
     k = a4(4,a1);
     printf("#0046:6 1 = %d %d\n",j,k);
     k = a5(4,a1);
-    printf("#0048:6 1 = %d %d\n",j,k);
+    printf("#0048: 1 = %d %d\n",j,k);
+    printf("#0049: 1 = %d\n",(unsigned long)a0 == addrs[0]);
+    printf("#0050: 1 = %d\n",(unsigned long)a5 == addrs[1]);
+    printf("#0051: 1 = %d\n",(unsigned long)a0 == addrs[2]);
+    printf("#0052: 1 = %d\n",(unsigned long)a5 == addrs[3]);
+
+    printf("#0053: 1 = %d\n",a2 == faddrs[0]);
+    printf("#0054: 1 = %d\n",a5 == faddrs[1]);
+    printf("#0055: 1 = %d\n",&a2 == faddrs[2]);
+    printf("#0056: 1 = %d\n",&a5 == faddrs[3]);
     return 0;
 }