Article View: fj.lang.c
Article #4600Re: Type of functions that return a pointer to self
From: Takashi Chikayama
Date: Tue, 21 Apr 1992 03:43
Date: Tue, 21 Apr 1992 03:43
116 lines
5709 bytes
5709 bytes
$B;d$N(B:
|C $B$G<+J,$HF1$8$h$&$J4X?t$X$N%]%$(B$B%s%?$rJV$94X?t$C$F(B, $B$I$&=q$1$PNI$$$N$G(B
|$B$7$g$&(B. $B=q$-$?$$$N$O(B:
|
| typedef functype (functype *)();
|
|$B$NITF0E@$K$J$C$F$$$k$h$&$J$b$N$J$s$G$9$,(B.
$B$H$$$&<ALd$KBP$7(B, $B$=$N8e$bB?$/$N%U%)%m!<$r$"$j$,$H(B$B$&$4$6$$$^$7$?(B.
$BLgNS(B $BM:4p$5$s(B:
|C $B$d(B C++ $B$O(B "Type variable" ($B!V7?JQ?t!W(B?) $B$r;}$C$F$$$^$;$s$+$i!";E(B$BJ}$"(B
|$B$j$^$;$s$M!#(BHaskell $BEy$N7??dO@5!9=$r;}$D8@8l$G$O4JC1$K=q$1$k$s$8$c$J$$(B
|$B$G$7$g$&$+!#(B
$B7?!XJQ?t(B$B!Y$NM-L5$NLdBj$+$I$&$+$OJL$H$7$F(B, $B7?$K$D$$$F$-$A$s$H$7$?8@8l$J(B
$B$i(B, $B2?$+J}K!$,$"$k$Y$-$G$7$g$&$M(B.
$BJR;3(B$B!!A1IW$5$s(B:
|> |$BKvHx8F=P$7(B (return f() $B$_$?$$$J$N(B) $B$r(B jump $B$K:GE,2=$7$F$/$l$J$$(B C $B8@8l(B
|> |$B=hM}7O(B ($B:GE,2=$7$F$/$l$k$N$O$R$H$D$b$*L\$K$+$+$C$F$$$J$$$N$G$9$,(B) $B$G(B,
|> |$B$J$s$H$+%9%?%C%/$r?-$P$5$:$KKvHx8F(B$B=P$7$5$;$?$/$F(B,
|
|$B!!(BSun C 1.1 $B$G$O:GE,2=$7$F$/$l$^$9!#(B
|
| %oX $B$NBe$o$j$K(B %iX $B$K0z?t$r%;%C%H(B
| call _func
| restore
|
|$B$H$J$j$^$9!#(B
$BEvA3$=$&$"$k$Y$-$@$H$O;W$$$^$7$?$,(B, $B$d$O$j$=$l$0$i$$$N(B$B:GE,2=$r$7$F$/$l(B
$B$k%3%s%Q%$%i$b$"$k$s$G$9$M(B. $B$J$k$[$I(B, jump $B$G$O$J$/(B, call + delay
slot $B$G$N(B restore $B$J$s$G$9$M(B.
$B?7>k!!Lw(B $B$5$s(B:
|$B#C$G$O!"%]%$%s%?$N%-%c%9%H$O!"A4A3LdBj$J$$$H;W$$$^$9$h!#(B
|$B$=$NBeI=A*(B$B<j$,!"(Bmalloc()$B$G$9!#$I$s$J9=B$BN$G$b!"(B
|
| struct s *p ;
| p = (struct s *) malloc( sizeof(struct s) );
|
|$B$G!"NN0h3NJ]$,$G$-$^$9$+$i!#$D$^$j!"#C$N%]%$%s%?$J$s$F!"0lKg(B
|$B$O$,$;$P%"%I%l%9$G$9!#<B(B$B:]!"$3$N%-%c%9%H$N7k2L!"%3!<%I$OA4A3(B
|$BA}$($^$;$s$7!#(B
$B!TCfN,!U(B
|$B#C$N7?%7%9%F%`$J$s$F!"$=$s$J$b$N$@(B$B$H;W$$$^$9!#$=$l$K!"%-%c%9(B
|$B%H$O!"Hs>o<jCJ$G$O$J$/$F>oEe<jCJ$G$9!#%-%c%9%H$,$J$$$H!"(B
|malloc() $B$O;H(B$B$($^$;$s!##C$r%"%;%s%V%j8@8l$H3d$j@Z$C$F!"%-%c(B
|$B%9%H$NMr$K$J$C$F$b5$$K$7$J$$$H$$$&$N$,$$$$$H;W$$$^$9(B$B!#(B
$B$7$+$7(B, $B$I$&$K$b5$;}$A$,0-$$$s$G$9(B. $B$?$H$($P(B, struct s *$B$rJV$94X?t$r(B
$B$o$6$o$6(B char * $B$rJV$9$h$&$K(B$B$ODj5A$7$F(B, return $BB&$H8F$VB&$NN>J}$G%-%c(B
$B%9%H$7$?$j$7$^$9(B? $B$7$^$;$s$h$M(B. $B$3$l$O(B, $B>/$7$G$b7?$N%A%'%C(B$B%/$,F/$/$3(B
$B$H$r4|BT$7$F$$$k$o$1$G$7$g$&(B? malloc $B$N$h$&$J(B, $B8@8l$N<BAuJ}<0$rMxMQ<T(B
$B$K2rJ|$7$F8+$;$k$h$&(B$B$JDc%l%Y%k!&%k!<%A%s$O;EJ}$,$J$$$G$9$,(B.
| $B!&%]%$%s%?$N%-%c%9%H$O!">o$K0BA4$G!"M>J,$J%3!<%I$b=P$J(B$B$$!#(B
| $B!&#C$r2DHB@-$N$"$k%"%;%s%V%j8@8l$H$7$F;H$&$J$i!"%-%c%9%H$,(B
| $B!!1x$$$H9M$($J$$!#(B
| $B!&%]%$%s%?$N@k8@$O!"#4%P%$%H$NNN0h3NJ]$H$$$&0UL#$7$+$J$$!#(B
struct s * $B$rJV$94X?t$r(B, $B$A$c$s$H(B struct s * $B$rJV$9$H@k8@$9$k$N$O(B, $B$=(B
$B$l0J>e$N(B ($B$?$H$($P(B lint $B$K$h$k(B) $B%A%'%C%/$r4|BT$9$k$+$i$G$9$h$M(B. $B$^$"(B,
$B;d$NM_$7$$ITF0E@$N$h$&$J7?$rDj5A$G$-$J$$$N$J$i(B, $B$=$l$O(B C $B$N7?$N$"$k8@(B
$B8l$H$7$F$N8B3&(B, $B$H$$$&$+(B, $B@_7W%_(B$B%9$H$$$&$3$H$G$7$g$&(B. $B$?$H$($P(B struct
$B$KBP$7$F(B:
struct s;
struct s { struct s *p; } structure_variable_name;
$B$H@k8@$G$-$k$N$HF1MM$K(B, $B$$$C$?$s4X?t$N7?$KL>A0$r$D$1$F(B:
function f;
function f *(*function_name)();
$B$N$h$&$K$G$b=q$1$k$h$&$K$7$F$*$1$PNI$+$C$?$N$K(B...
$B6b:j9n8J$5$s(B:
|ANSI-C $B$K$O(B void * $B$+$iG$0U$N%]%$%s%?$X%-%c%9%H$J$7$G7?JQ49$G$-$k$H$$$&7?(B
|$B%7%9%F%`$N7j$,$"$j$^$9$N$G!">e$N$h$&$K$7$F(B$B$*$1$P%-%c%9%H$OITMW$G$9!#$5$i(B
|$B$K4X?t8F$S=P$7$G$O4X?t$NBe$o$j$K4X?t$X$N%]%$%s%?$,;H$($k$N$G%]%$%s%?(B$B;2>H(B
|$B$bITMW$G$9!#$7$?$,$C$F!">e$N@k8@$N$b$H$G$O(B
| functype f;
| while (f) f = f();
|$B$H=q$/$3(B$B$H$,2DG=$G$9!#(B
$B$*$d(B, $B$=$&$@$C$?$s$G$9$+(B. $B$J$k$[$I(B, K&R $B$N(B C $B$G$b$=$&$J$C$F$k$_$?$$$G(B
$B$9$M(B.
|$B6a;3$5(B$B$s$O$3$&$$$C$?$3$H$b$4B8$8$N>e$G<ALd$5$l$F$$(B
|$B$k$N$@$H;W$$$^$9$,!#(B
$B;d$O8@8l$N@_7W$OK\6H$N0lIt$H$7$F(B$B$-$^$7$?$,(B, $B$3$NN)>l$+$i$O(B C $B$K$D$$$F(B
$B$O%IAG?M$G(B ($B%W%m%0%i%^$H$7$F$b0lK|9T$b=q$$$F$J$$$G$7$g$&$+$iAG?M(B$B$G$9$,(B)
$BA4A3CN$j$^$;$s$G$7$?(B.
$B$5$F(B, $B0J>e?tB?$/$NJ}$+$i%U%)%m!<$r$$$?$@$-$^$7$?$,(B, $B7kO@$H$7$F(B:
$B!y(B $B;d$NM_$7$$ITF0E@E*$J4X?t7?$O(B C $B$G$O=q$1$J$$(B
$B!y(B void * $B$+$i(B $BG$0U$N7?(B * $B$X$N%-%c%9%H$OITMW$@$+$i(B, $B$3(B$B$l$r;H$&$HNI$$(B
$B$H$$$&$3$H$N$h$&$G$9(B. $B$H$$$&$o$1$G(B, void * (*func)() $B$H=q$/$3$H$G(B ($B;d(B
$B<+?H$N5$;}$A0-(B$B$5$O;D$k$b$N$N(B, C $B$O$=$s$JDxEY$N$b$N$H$$$&$3$H$G(B) $B2r7h$H(B
$B$$$&$3$H$K$5$;$F$$$?$@$-$?$$$H;W$$$^$9(B.
$B%U%)(B$B%m!<$$$?$@$$$?3'$5$s(B, $B=E$M$F$"$j$,$H$&$4$6$$$^$7$?(B.
$B6a;3(B
Technical Details
Message-ID:
<CHIK.92Apr21124309@ss38.icot.or.jp>Path:
arc1-ca.pugleaf.net!sparky!uunet!sun-barr!sh.wide!hitwide!hinocgw!hitgw!icot32!ss151.icot.or.jp!ss151!chikReferences:
<CHIK.92Apr13130919@ss38.icot.or.jp>Show Full Headers
Complete Article Headers
X-Google-Language: Japanese,JIS X-Google-Thread: 106434,5713bef7aaeb72c4 X-Google-Attributes: gid106434,public X-Google-ArrivalTime: 1992-04-20 20:43:09 PST Path: arc1-ca.pugleaf.net!sparky!uunet!sun-barr!sh.wide!hitwide!hinocgw!hitgw!icot32!ss151.icot.or.jp!ss151!chik From: chik@icot.or.jp (Takashi Chikayama) Newsgroups: fj.lang.c Subject: Re: Type of functions that return a pointer to self Message-ID: <CHIK.92Apr21124309@ss38.icot.or.jp> Date: 21 Apr 92 03:43:09 GMT References: <CHIK.92Apr13130919@ss38.icot.or.jp> Sender: news@ss151.icot.or.jp Reply-To: chikayama@icot.or.jp Distribution: fj Organization: Institute for New Generation Computer Technology, Tokyo, Japan. Lines: 116 In-Reply-To: chik@icot.or.jp's message of Mon, 13 Apr 1992 04: 09:19 GMT