Newsgroups: fj.lang.c,fj.lang.c++
Path: galaxy.trc.rwcp.or.jp!coconuts.jaist!wnoc-tyo-news!infoweb-news!news.tokyo.infoweb.or.jp!fgwnews!fdmnews!flabnews!kiko!news
From: tamy@flab.fujitsu.co.jp (Yutaka Tamiya)
Subject: Maximal use of "const" in function declarations ?
Message-ID: <ywnohh9xinv.fsf@azusa.proc.flab.fujitsu.co.jp>
Date: Fri, 8 Nov 1996 05:25:24 GMT
Organization: Fujitsu Laboratories Ltd., Kawasaki, Japan
Sender: tamy@azusa.proc.flab.fujitsu.co.jp
X-Nntp-Posting-Host: azusa
Followup-To: fj.lang.c
X-Newsreader: Gnus v5.0.12
Lines: 71
Xref: galaxy.trc.rwcp.or.jp fj.lang.c:3070 fj.lang.c++:177
X-originally-archived-at: http://galaxy.rwcp.or.jp/text/cgi-bin/newsarticle2?ng=fj.lang.c&nb=3070&hd=a
X-reformat-date: Mon, 18 Oct 2004 15:18:22 +0900
X-reformat-comment: Tabs were expanded into 4 column tabstops by the Galaxy's archiver. See http://katsu.watanabe.name/ancientfj/galaxy-format.html for more info.

$BED5\!wIY;NDL8&$H?=$7$^$9!#(B

ANSI-C $B$H(B C++ $B$G4X?t@k8@$K!V(B const $B$r=PMh$k$@$1B?$/F~$l$k!W$3$H$,Bg@Z(B
$B$H?.$8$F%3!<%G%#%s%0$7$F$b!"%3%s%Q%$%i$,<u$1IU$1$F$/$l$:!":$OG$7$F$*$j(B
$B$^$9!#(B 

int $B$N#3=E%]%$%s%?$r<h$k4X?t$O(B ( f3(int*** c) )$B!"%]%$%s%?$NFbMF$r(B 
const $B$K$9$k$+$7$J$$$+$G#8DL$j$N@k8@$,$"$j$^$9!#$=$7$F!"(Bint*** z; $B$G@k(B
$B8@$5$l$?JQ?t$r0z$-?t$KEO$7$F4X?t%3!<%k$9$k$H!"%3%s%Q%$%i$,!V0EL[!W$KE,(B
$B59(B const $B$rIU$1$?7?$KJQ49$7$F$/$l$k$b$N$H;W$C$F$$$^$7$?!#(B

$B$7$+$7!"0J2<$N%=!<%9$r%3%s%Q%$%k$9$k$H!"7?%(%i!<$K$J$k$N$G$9!#(B

(0) C++ (SUN C++ $B$H(B GNU g++) $B$H(B ANSI-C (SUN acc $B$H(B GNU gcc)$B$G(B OK:
f1c, f2vc, f2cc, f3vvc
(1) C++ (SUN C++ $B$H(B GNU g++) $B$G%(%i!<(B:
f2cv, f3vcv, f3cvv, f3cvc, f3ccv
(2) ANSI-C (SUN acc $B$H(B GNU cc) $B$G%(%i!<(B:
(1) $B$G5s$2$?4X?t$H(B f3vcc, f3ccc

----8<------8<---------8<-------8<-----
voidf1c(const int * a);

voidf2vc(int * const* b);
voidf2cv(const int * * b);
voidf2cc(int * const* b);

voidf3vvc(int * * const* c);
voidf3vcv(int * const* * c);
voidf3vcc(int * const* const* c);
voidf3cvv(int const* * * c);
voidf3cvc(int const* * const* c);
voidf3ccv(int const* const* * c);
voidf3ccc(const int * const* const* c);

void foo(void)
{
    int aa[3] ,*x = aa;
    int *bb[3], **y = bb;
    int **cc[3], ***z = cc;

    f1c(x);
    f2vc(y);
    f2cc(y);
    f3vvc(z);
    /* gcc and SUN acc error */
    f3vcc(z);
    f3ccc(z);
    /* g++ and SUN CC error */
    f2cv(y);
    f3vcv(z);
    f3cvv(z);
    f3cvc(z);
    f3ccv(z);
}
----8<------8<---------8<-------8<-----
$B$3$l$i$,%(%i!<$K$J$k$3$H<+BNIT;W5D$J$N$G$9$,!"FC$K0J2<$N#2E@$bJ,$+$j$^(B
$B$;$s!#(B

(a) ANSI-C $B$G(B f2cc $B$,(B OK $B$J$N$K(B f3vcc $B$d(B f3ccc $B$,%(%i!<$K$J$k$N$+!)(B
(b) C++ $B$G$O(B "c" $B$N8e$K(B "v" $B$,Mh$F$O$$$1$J$$$N$+!)(B (f2cv, f3vcv,...)

$B$J$*!";w$?$h$&$JBeF~J8$G<B83$7$?$H$3$m!"F1$87k2L$,=P$^$7$?!#(B
$BC/$+$*J,$+$j$K$J$kJ}$O$$$i$C$7$c$$$^$;$s$G$7$g$&$+!)(B

$B!t9+$K(B "const" $B$r$A$c$s$H@bL@$7$?K\$,3'L5$J$N$O$3$&$7$?M}M3$+$i$+$!!)(B
-- 
--------
$B%A%'%mCF$-$N(B tamy@flab.fujitsu.co.jp /$B$U8&(B/CAD$B8&(B/$BED5\(B  $BK-(B
Tel: 044-754-2663, Fax: 044-754-2664
            
