>> int myfunc(void)
>> {
>> conts char funcname[128] = "myfunc" ;
>> printf("%s:%d\t%s" __FILE__,__LINE__,funcname) ;
>> }
>> ãã®BUGã®éçãããã
>> printf("%s:%d\t%s",__LINE__ , __FILE__,funcname) ;
>> }
>> 解説
>> ã«ã³ããå¿ããã®ã§ã__FILE__ãæžåŒã«ãã£ã€ããã®ã§
>> ïŒ
ïœã«è¡çªå·ïŒ__LINE__ïŒãããã£ãŠæ»ãã ã
>> èè
ã®çæ§ã«è³ªåïŒïŒ
>> ãã®ãã£ä»ãæååãææ¢ãã
>> è¯ãæ¹æ³ããåç¥ã®æ¹æããŠãã ããã
#define MY__FILE__ (__FILE__)
#define MY__LINE__ (__LINE__)
ãšããŠãå¿ ã MY__FILE__ ãš MY__LINE__ ã䜿ããšãã
printf ("%s:%d\t%s" MY__FILE__, MY__LINE__, funcname);
ãããªãã³ã³ãã€ã«ã§ããã§ããããã¶ãã
ããã㯠gcc ãªã -Wall ãä»ããŠãwarning ã¯å¿
ãããããšãã
---
By ããã
ç§ãprintfç³»ã§ãã©ãŒãããã«åã£ãŠãªããã©ã¡ãŒã¿ãæž¡ããŠã³ã¢
ãã³ãããããããã°ãã¡ã€ã«ã«æå·ãæžã蟌ãã§ããŸã£ãããã
ããšã¯ããŸã«ãããŸãããã ãããšãã£ãŠããã鲿¢ããæ¹æ³ãè
ããããšã¯æããŸããã
--
ããã¯ãª
tabe wrote:
> ãã®ãã£ä»ãæååãææ¢ãã
> è¯ãæ¹æ³ããåç¥ã®æ¹æããŠãã ããã
ã«ã³ããå ¥ããã
> ãªãã§ã颿°å
倿°ã®constã¯ã
> çç¥æstaticã«ãªããªãã®ã§ããããïŒ
constãã€ãããã€ããªããã§ãstaticã ã£ããautoã ã£ãã
ããããå€ããã»ããããããã§ãã
> const char funcname[128] = "myfunc" ;
> ã
> static const char funcname[] = "myfunc"
> ãšãstaticãä»ããããŠã[]ã®ïŒïŒïŒãæžãããªãæ¹æ³
> æããŠãã ããã
ïŒïŒæå³äžæã§ãã
--
cog...@sp.hudson.co.jp
æ ªåŒäŒç€Ÿãããœã³
ã³ã¢ã»ãã¯ãããžãŒäºæ¥æ¬éš
ã·ã¹ãã éš ãœãããŠã§ã¢èª²
ç岡 å¿(Kumaoka Shinobu)
> èè
ã®çæ§ã«è³ªåïŒïŒ
> ãã®ãã£ä»ãæååãææ¢ãã
> è¯ãæ¹æ³ããåç¥ã®æ¹æããŠãã ããã
ããã°ã©ã ã¯æžããéãã«ããåããŸãããåœããåã®äºãªãã§ããã©ã
å€ãªã€ãŸããªããã¹ãç¡ããã®ã¯ããã°ã©ãã®ä»äºãªãã§ãããããã
ãªãããããšããã®ãªãããšãã£ã¿ã§å€æ°ã«è²ãã€ãããšããéã«","
ã«è²ãã€ãããšãããã°ããã®ã§ã¯ãªãã§ããïŒ
> èè
ã®çæ§ã«è³ªåïŒïŒ
> ãªãã§ã颿°å
倿°ã®constã¯ã
> çç¥æstaticã«ãªããªãã®ã§ããããïŒ
> ã¹ã¿ãã¯ã«è»¢éããåœä»€ã[ãããã]åºãŠã
> ãšã£ãŠãåŠçé床ãé
ããªããã§ããã©ã
> const ãã€ãããšãªããšãªããdataãšãªã¢ïŒUNIXã®èšèïŒïŒã«
> åãããããªãã ããã©ããã£ã±ãã¹ã¿ãã¯ã«ãšã£ãŠãã
const ã®æå³ãšãstatic ã®æå³ãæ··åãããŠãããã«ãèŠåãåºæ¥ãã®
ã§ããããããã§ãããïŒ
> èè
ã®çæ§ã«è³ªåïŒïŒ;
> const char funcname[128] = "myfunc" ;
> ã
> static const char funcname[] = "myfunc"
> ãšãstaticãä»ããããŠã[]ã®ïŒïŒïŒãæžãããªãæ¹æ³
> æããŠãã ããã
C ã®ææ³æžãè¯ããèªã¿ã«ãªã£ãæ¹ãããããšããã
--
Naohiro Hihara hiha...@post.yamaha.co.jp
http://homepage1.nifty.com/surfweb/
"YOKOTA Yoshinori" <yok...@yynet.tama.tokyo.jp> wrote in message
news:0203200058...@sapphire.yynet.tama.tokyo.jp...
> >> printf("%s:%d\t%s" __FILE__,__LINE__,funcname) ;
> >> ã«ã³ããå¿ããã®ã§ã__FILE__ãæžåŒã«ãã£ã€ããã®ã§
> >> ïŒ
ïœã«è¡çªå·ïŒ__LINE__ïŒãããã£ãŠæ»ãã ã
> >> èè
ã®çæ§ã«è³ªåïŒïŒ
> >> ãã®ãã£ä»ãæååãææ¢ãã
> >> è¯ãæ¹æ³ããåç¥ã®æ¹æããŠãã ããã
>
> #define MY__FILE__ (__FILE__)
> #define MY__LINE__ (__LINE__)
>
> ãšããŠãå¿
ã MY__FILE__ ãš MY__LINE__ ã䜿ããšãã
> ãããªãã³ã³ãã€ã«ã§ããã§ããããã¶ãã
æå³ããéãã«ãªããŸããã
çŽ æŽãããã
#define MY__LINE__ (__LINE__)
ã§ãMY_LINEã®å±éã¯ãã®#defineãããè¡ã§ã
äžåŸåãã«ãªã£ãŠããŸãããšæã£ãã®ã§ããã
倧äžå€«ã§ããã
ãããããã®ã¢ã€ãã¢ãããŒã¹ã«ã
__FILE__ãšã__LINE__ãMIXããããã£ä»ããªããã¯ããïŒæéãããã§äœã£ãŠã¿ãŸ
ãã
#define __FILELINE__ (__FILE__ ":" __expand__(__LINE__))
#define __dquote__(X) #X
#define __expand__(X) __dquote__(X)
static void oldmac(void)
{
printf("%s:%d\n",__FILE__,__LINE__) ;
}
static void newmac(void)
{
printf("%s\n", __FILELINE__ ) ;
}
> ããã㯠gcc ãªã -Wall ãä»ããŠãwarning ã¯å¿
ãããããšãã
ããã¯ãç§ãæçšããŠããŸããã
BUGãèµ·ããã®ã¯ã
my_debug_printf_like()颿°ã§ããã®ã§ã
ïœïœïœã«ãprintfã®æžåŒãšåããã§ãã¯ãããã
#pragma printf_like
ã®ãããªç©ããã°è¯ãã®ã§ããã
ãåç¥ã§ããïŒ
> ããããã
> printf("%s:%d\t%s" __FILE__,__LINE__,funcname) ;
> ã§ãæ»ã¬ãã ãããæ»ãã åå ã調ã¹ãã°ãããããããã ããå
> é¡ãªãã®ã§ã¯...?
ãªãã®ããã®ãããã°æãªãã ã ;-)
---------------------------------------------------------------------
tesi...@mtf.biglobe.ne.jp
> ç§ãprintfç³»ã§ãã©ãŒãããã«åã£ãŠãªããã©ã¡ãŒã¿ãæž¡ããŠã³ã¢
> ãã³ãããããã
>ãã°ãã¡ã€ã«ã«æå·ãæžã蟌ãã§ããŸã£ãããã
> ããšã¯ããŸã«ãããŸããã
å°ãªããšãïŒåãã£ãããã§ããã
ç§ããããŸãã
char *str[] ={
"æååã" //ããã§ã«ã³ãå¿ããŸãã
"ãã£ä»ãã"
} ;
ç§ã®éšäžããããŸããã
ãããŠãä»é±ãã®åé¡ãåã§ãŸããã
>ã ãããšãã£ãŠããã鲿¢ããæ¹æ³ãèããããšã¯æããŸããã
ïŒïŒïŒäººä»¥äžã®ã
è€æ°åæã®æ ç¹ã§ã
æ°åKLINEã®ããã°ã©ã ã
ååéçºããŠã
å¿
æ»ã«åã£ããã·ã³ã¿ã€ã ã§
ãã®ãã°ãçºèŠãã
åæ§åé¡ãã
è³æ¥ãAMïŒïŒïŒïŒãŸã§èª¿æ»ãã
ã£ãŠæã§ããèããŸãããïŒ
ç°¡åãªBUGãªãã
éèŠåé¡ã«ãªããªããšã¯ã
ç§ã¯èããŠããŸããã
以äž
-----------------------------------
èŠãŠãåæäœ¿ã£ãŠ http://rec.ncos.co.jp
ãã®æ§ãªã¢ã€ãã¢ãããã°ã
ããã«
#define __FILELINE__ (__FILE__ ":" __expand__(__LINE__))
#define __dquote__(X) #X
#define __expand__(X) __dquote__(X)
ãšãçºå±ãããäºãã§ããŸãã
> > ãªãã§ã颿°å
倿°ã®constã¯ã
> > çç¥æstaticã«ãªããªãã®ã§ããããïŒ
>
> constãã€ãããã€ããªããã§ãstaticã ã£ããautoã ã£ãã
> ããããå€ããã»ããããããã§ãã
äžã§è§£èª¬ããŸããã
ããã§ãèšãããã£ãäºã¯ãèšèªã®ä»æ§ãšããŠ
const ãä»ããã
颿°å
ã§ãã
颿°å€ã§ãã
static ãä»ãããããä»ããŸãã
éçãšãªã¢ã«ããŒã¿ãå²ãä»ãã仿§ã§ããã°
è¯ãã£ãã®ã«ãªãŒã
ãšèšãç§ã®åžæã§ãã
>
> > const char funcname[128] = "myfunc" ;
> > ã
> > static const char funcname[] = "myfunc"
> > ãšãstaticãä»ããããŠã[]ã®ïŒïŒïŒãæžãããªãæ¹æ³
> > æããŠãã ããã
>
> ïŒïŒæå³äžæã§ãã
ãããœã³ã®ç岡 ããã¯ãæããçµã¿èŸŒã¿ç³»ã ãšæããŸãããã
ã¹ã¿ãã¯ã®è²Žéãã¯ãåç¥ã§ãããã
ãã®ïŒïŒ
颿°å
ã§ã
char funcname[128] = "myfunc" ;ãšèšè¿°ããå Žåãšã
char funcname[] = "myfunc" ;ãšèšè¿°ããå Žåã®
ã©ã¡ããã¹ã¿ãã¯ãæ¶è²»ããããåœç¶ãåç¥ããšæããŸãã
ïŒç§ã¯ïŒµïŒ®ïŒ©ïŒžå±ãªã®ã§ãã¹ã¿ãã¯æ¶è²»ã¯å
šç¶æ°ã«ããŸãããã
ããããæååå
ã®æåã®æ°ãæ°ãã人ãããã®ã§ã
ãã®ïŒïŒ
颿°å
ã§ã
static char funcname[] = "myfunc"ããšèšè¿°ããå Žåãšã
auto char funcname[] = "myfunc"ããšèšè¿°ããå Žåã§
å®è¡æã©ã¡ããæ©ããããåç¥ã§ãããã
ïŒautoã®ããŒã¯ãŒãã䜿ã£ãŠã人èŠãäºãªãã§ããã
ããã§ã¯åŒ·èª¿ã®ãã䜿ããŸããã
ãã®ïŒïŒ
æååãread only ãšããŠäœ¿çšããå Žåã
static char funcname[] = "myfunc"ããšèšè¿°ããå Žåãšã
static const char funcname[] = "myfunc"ããšèšè¿°ããå Žåã§
ã©ã¡ããå
ç¢ãªããã°ã©ã ãã
fj.comp.lamg.cã®åžžé£ã®ç岡 ãããç¥ããªãããããªãã
ã§ãconst ãä»ããã°ãæžãå€ããªããšå®£èšããããã ãã
ã³ã³ãã€ã©ãããããã¹ã¿ãã¯ãžã®è»¢éã³ãŒããçæãã
çç±ãç§ã«ã¯è§£ããªãããšèšã£ãŠããã®ã§ãã
ãŸãšãïŒ
ãã®ïŒããïŒãŸã§ããŸãšãããšã
颿°å
ã§read only ã®æååã¯
char funcname[128] = "myfunc" ïŒ ãšæžããŠã»ãããªã
static const char funcname[] = "myfunc"ããšæžããŠæ¬²ããã
ïŒéšäžããçºæ³šå
ã®äººã«ã
ãããŸã§æžãã°ãè§£ã£ãŠããã ããŸããïŒ
ããã§é§ç®ãªãã
詳现ãäžã«ããã£ãããšä»ããŸãã®ã§ã
èŠãŠäžããã
--
以äž
èŠãŠãåæäœ¿ã£ãŠ http://rec.ncos.co.jp
âïŒïŒïŒïŒïŒïŒïŒïŒïŒïŒïŒ
以äžè©³çްã
è¶£æšïŒ
/bin/cat vs.c
#define __FILELINE__ (__FILE__ ":" __expand__(__LINE__))
#define __dquote__(X) #X
#define __expand__(X) __dquote__(X)
static void oldmac(void)
{
printf("%s:%d\n",__FILE__,__LINE__) ;
}
static void newmac(void)
{
printf("%s\n", __FILELINE__ ) ;
}
static void Fconst(void)
{
const char funcname[] = __FILELINE__ ;
char buf[1024] ;
printf("%s\n",funcname) ;
}
static void Fstatic(void)
{
static char funcname[] = __FILELINE__ ;
char buf[1024] ;
printf("%s\n",funcname) ;
}
main()
{
int i ;
printf("%s\n",__FILELINE__ ) ;
for(i = 0 ; i < 0x1000 ; i++) {
oldmac() ;
newmac() ;
Fconst() ;
Fstatic() ;
}
}
gcc -O2 `pwd`/vs.c -c
gcc -O2 `pwd`/vs.o -o vs
pixie ./vs -o vs.P
pixie registers: r31, r30, and r21.
old code = 3296 bytes, new code = 12228 bytes (3.7x)
vs.P > /dev/null
----------------------------------------------------------------------------
* -p[rocedures] using basic-block counts; *
* sorted in descending order by the number of cycles executed in each *
* procedure; unexecuted procedures are excluded *
----------------------------------------------------------------------------
442534 cycles
cycles %cycles cum % cycles bytes procedure (file)
/call /line
â
212992 48.13 48.13 52 ? Fconst
(/home2/tabe/prof/staticVSconst/vs.c)
65536 14.81 62.94 16 ? oldmac
(/home2/tabe/prof/staticVSconst/vs.c)
â61440 13.88 76.82 15 ? Fstatic
(/home2/tabe/prof/staticVSconst/vs.c)
61440 13.88 90.71 15 ? newmac
(/home2/tabe/prof/staticVSconst/vs.c)
40980 9.26 99.97 40980 ? main (?)
â
staticãä»ããªãå Žåã®ãµã€ã¯ã«æ°
âstaticãä»ããå Žåã®ãµã€ã¯ã«æ°
dis vs.o
**** DISASSEMBLER ****
disassembly for vs.o
section .text
oldmac()
0: 27bdffe8 addiu sp,sp,-0x18
4: 3c050000 lui a1,0x0
8: 24a50004 addiu a1,a1,0x4
c: afbf0010 sw ra,0x10(sp)
10: 27848010 addiu a0,gp,-0x7ff0
14: 0c000000 jal 0x0 <0x0>
18: 24060006 li a2,0x6
1c: 8fbf0010 lw ra,0x10(sp)
20: 00000000 nop
24: 03e00008 jr ra
28: 27bd0018 addiu sp,sp,0x18
newmac()
2c: 27bdffe8 addiu sp,sp,-0x18
30: afbf0010 sw ra,0x10(sp)
34: 3c050000 lui a1,0x0
38: 24a50028 addiu a1,a1,0x28
3c: 0c000000 jal 0x0 <0x0>
40: 27848018 addiu a0,gp,-0x7fe8
44: 8fbf0010 lw ra,0x10(sp)
48: 00000000 nop
4c: 03e00008 jr ra
50: 27bd0018 addiu sp,sp,0x18
Fconst()â
staticãä»ããªãå Žåã®ã³ãŒã
54: 3c060000 lui a2,0x0
58: 24c60050 addiu a2,a2,0x50
5c: 27bdfbc0 addiu sp,sp,-0x440
60: afbf0010 sw ra,0x10(sp)
64: 30c20003 andi v0,a2,0x3
68: 10400018 beq v0,zero,0x60 <0xcc>
6c: 27a30018 addiu v1,sp,0x18
70: 24c20020 addiu v0,a2,0x20
74: 27848018 addiu a0,gp,-0x7fe8
78: 88c50000 lwl a1,0x0(a2)
7c: 88c70004 lwl a3,0x4(a2)
80: 88c80008 lwl t0,0x8(a2)
84: 88c9000c lwl t1,0xc(a2)
88: 98c50003 lwr a1,0x3(a2)
8c: 98c70007 lwr a3,0x7(a2)
90: 98c8000b lwr t0,0xb(a2)
94: 98c9000f lwr t1,0xf(a2)
98: a8650000 swl a1,0x0(v1)
9c: a8670004 swl a3,0x4(v1)
a0: a8680008 swl t0,0x8(v1)
a4: a869000c swl t1,0xc(v1)
a8: 24c60010 addiu a2,a2,0x10
ac: b8650003 swr a1,0x3(v1)
b0: b8670007 swr a3,0x7(v1)
b4: b868000b swr t0,0xb(v1)
b8: b869000f swr t1,0xf(v1)
bc: 14c2ffee bne a2,v0,-0x48 <0x78>
c0: 24630010 addiu v1,v1,0x10
c4: 08000040 j 0x100 <0x100>
c8: 00000000 nop
cc: 24c20020 addiu v0,a2,0x20
d0: 27848018 addiu a0,gp,-0x7fe8
d4: 8cc50000 lw a1,0x0(a2)
d8: 8cc70004 lw a3,0x4(a2)
dc: 8cc80008 lw t0,0x8(a2)
e0: 8cc9000c lw t1,0xc(a2)
e4: 24c60010 addiu a2,a2,0x10
e8: ac650000 sw a1,0x0(v1)
ec: ac670004 sw a3,0x4(v1)
f0: ac680008 sw t0,0x8(v1)
f4: ac69000c sw t1,0xc(v1)
f8: 14c2fff6 bne a2,v0,-0x28 <0xd4>
fc: 24630010 addiu v1,v1,0x10
100: 88c20000 lwl v0,0x0(a2)
104: 98c20003 lwr v0,0x3(a2)
108: 80c70004 lb a3,0x4(a2)
10c: 80c80005 lb t0,0x5(a2)
110: 80c90006 lb t1,0x6(a2)
114: a8620000 swl v0,0x0(v1)
118: 27a50018 addiu a1,sp,0x18
11c: b8620003 swr v0,0x3(v1)
120: a0670004 sb a3,0x4(v1)
124: a0680005 sb t0,0x5(v1)
128: 0c000000 jal 0x0 <0x0>
12c: a0690006 sb t1,0x6(v1)
130: 8fbf0010 lw ra,0x10(sp)
134: 00000000 nop
138: 03e00008 jr ra
13c: 27bd0440 addiu sp,sp,0x440
Fstatic()âstaticãä»ããå Žåã®ã³ãŒã
140: 27bdfbe8 addiu sp,sp,-0x418
144: afbf0010 sw ra,0x10(sp)
148: 3c050000 lui a1,0x0
14c: 24a50000 addiu a1,a1,0x0
150: 0c000000 jal 0x0 <0x0>
154: 27848018 addiu a0,gp,-0x7fe8
158: 8fbf0010 lw ra,0x10(sp)
15c: 00000000 nop
160: 03e00008 jr ra
164: 27bd0418 addiu sp,sp,0x418
ãªããåéãããŠãŸããã?
# ã ããã
# char *strcpy(char *dst, const char *src)
# ãªã©ã®constã
# > éçãšãªã¢ã«ããŒã¿ãå²ãä»ãã仿§
# ã ã£ãããããå°ããšæãã®ã ã...ã
constã¯å€ã倿Žãããªãããšãä¿èšŒ(ããã°ã©ããŒã«ã
åŠçç³»ã«ã)ãã宣èšãªã®ã ããããã颿°å
ã§ã®ã¿é
åã確ä¿ãããããããã®é åãconstã§ãã£ãŠã»ãã
å Žé¢ã ã£ãŠãããããããŸãã
autoãstaticã
constãconstã§ãªãã
ãšãã2ã€ã®éžæãçŽäº€ããŠããããããå¿
èŠãªèªç±åºŠ
ãåŸãããããã§ã
> static ãä»ãããããä»ããŸãã
> éçãšãªã¢ã«ããŒã¿ãå²ãä»ãã仿§ã§ããã°
> è¯ãã£ãã®ã«ãªãŒã
ã®ããã«æããã®ã¯constã®äž»æšãæ£ããçè§£ããŠããª
ãããã ãšæããŸããã
--
倪ç°çŽ(Junn Ohta) (æ ª)ãªã³ãŒ/æ°æšªæµäºæ¥æ
oh...@sdg.mdd.ricoh.co.jp
tabe wrote:
> 質åïŒïŒ
> ãã®ãã£ä»ãæååãææ¢ãã
> è¯ãæ¹æ³ããåç¥ã®æ¹æããŠãã ããã
å
±éã®ããããã¡ã€ã«ã«ã
#define __DEBUGPRINT__(a,b,c) printf("%s:%d\t%s",a,b,c)
ãšçœ®ããŠã
ãããã°å°åãããããšããã«ã
__DEBUGPRINT__(__FILE__,__LINE__,funcname) ;
ãšå
¥ããã
ããããã¡ã€ã«ã®æ¹ã¯ãæŸã£ãŠãããŠã䜿ããªããã°ãåé¡ãªãã
ïŒã³ã³ãã€ã©ã®äœèšãªä»äºã«ã¯ãªããããããªããã©ïŒ
ãããã¯äœããå§ãã§ããªããã©ã
#define __DEBUGPRINT__ printf("%s:%d\t%s",__FILE__,__LINE__,funcname)
ãšããŠ
__DEBUGPRINT__ ;
ã§ãå¯ã®ã¯ãã
> 質åïŒïŒ
> ãªãã§ã颿°å
倿°ã®constã¯ã
> çç¥æstaticã«ãªããªãã®ã§ããããïŒ
> ã¹ã¿ãã¯ã«è»¢éããåœä»€ã[ãããã]åºãŠã
> ãšã£ãŠãåŠçé床ãé
ããªããã§ããã©ã
ããã¯ãautomatic倿°ãconst宣èšããããã
ç¡çç¢çãã¹ã¿ãã¯äžã«ã³ããŒããå¿
èŠãçºçããŠããã®ã§ã¯ïŒ
> const ãã€ãããšãªããšãªããdataãšãªã¢ïŒUNIXã®èšèïŒïŒã«
> åãããããªãã ããã©ããã£ã±ãã¹ã¿ãã¯ã«ãšã£ãŠãã
éã¢ã»ã³ãã«çµæãèŠããšãdataãšãªã¢ã«ããšã£ãŠã
ãããã¹ã¿ãã¯é åã«ã³ããŒããªãããŠããããã«èŠããŸããïŒ
> 74: 27848018 addiu a0,gp,-0x7fe8
ãã®-0x7fe8ã£ãŠã"myfunc"ãããªãã§ããïŒ
ïŒoldmac,newmac,Fconst,Fstaticã®å
šãŠã«å
±éããŠååšããŠããŸãïŒ
> 質åïŒïŒ
> const char funcname[128] = "myfunc" ;
> ã
> static const char funcname[] = "myfunc"
> ãšãstaticãä»ããããŠã[]ã®ïŒïŒïŒãæžãããªãæ¹æ³
> æããŠãã ããã
staticã«ããæå³ããªããšæããããäžèšã®éãã
char *funcname = "myfunc" ;
static宣èšããŠããåé¡ã¯å šããªãã
static char *funcname = "myfunc" ;
> 远èšïŒ
> èªå倿°ã¯ãã¹ã¿ãã¯ã«ãšããšã¯éããªãã®
> çªã£èŸŒã¿ã¯ããã§ã¯ããªãã§äžããã
ãããèªå倿°ã¯ã¹ã¿ãã¯ã«ããåãããªããšæããŸããïŒ
ïŒãã®ã«ãŒã«åæã«å€ãããããšããªã«ãŒã·ãã³ãŒã«ãåºæ¥ãªããªãã
ã
ã
(^^;
ïŒ
以äžãå
šç¶ãåèã«ã¯ãªããªããšæããŸãããç§ãªãã®åçã§ããã
> ã«ã³ããå
¥ãå¿ããããã
> å
¥ãå¿ãã鲿¢ããæ¹æ³ããããŸãããïŒãš
> èããŠããã®ã§ãã
> ã§ããããããã§ç§ãæåŸ
ããçãã¯ã
> ãããæ°ãæžããŠãããã
> #define MY__FILE__ (__FILE__)
> ã®æ§ãªã¢ã€ãã¢ã§ãã
æãã®ã§ãããå
¥ãå¿ããŠãããã©ããã®å€å®ã¯ C èšèªã®ç¯å²ã®å€ã§ãããã
å
¥ã£ãŠãªãã®ãæå³ããåäœãããããŸããã®ã§ã
# ä»å㯠printf ã®æžåŒãšåããªãã®ã§ãééã£ãŠãããšããããšãåãããŸ
# ãããã©ã
èªåã§ check ããŒã«ãäœããšããææ®µã¯é§ç®ãªã®ã§ããããïŒ cpp ãéãã
çµæã perl script ãªã yacc&lex ã§äœæããããŒã«ã«æž¡ããªãããŠãã§ãã
远å ã§ããŒã«ãäœæãããšããã®ããŒã«èªèº«ããã°ãæã£ãŠããå¯èœæ§ãåŠå®
ã§ããŸãããã©âŠ
ã€ãªããŠäœ¿ãããæã«ã¯ __FILE__ãã€ãªããŠäœ¿ããããªãæã«ã¯ MY__FILE__
ãšãªãã®ã¯ãããã¯ããã§æ··ä¹±ã®ããšããšæãã®ã§ãã
# ã€ãªããŠäœ¿ãããšã¯ããããªãããªãããã®ããªãã
> static char funcname[] = "myfunc"ããšèšè¿°ããå Žåãšã
> auto char funcname[] = "myfunc"ããšèšè¿°ããå Žåã§
ãã®æ¯èŒã¯ãŸããã§ãããâŠãæããã«æ³å®ããŠããäœ¿ãæ¹ãéãããšã
> æååãread only ãšããŠäœ¿çšããå Žåã
> static char funcname[] = "myfunc"ããšèšè¿°ããå Žåãšã
> static const char funcname[] = "myfunc"ããšèšè¿°ããå Žåã§
ãã¡ãã¯ãread-only ãšããŠäœ¿çšãããããšããæå³ã倿ããªããšã§ããªã
æäœã§ããããC compiler ãã©ã£ã¡ãæ£ããããå€å®ããã®ã¯ãå°é£ã§ã¯ã
ããŸãããïŒ
ãŸãã
const char funcname[] = "myfunc" ;
static const char funcname[] = "myfunc" ;
å士ã«ããŠãã"myfunc" ãäœåŠã«çœ®ãããŠããããæ°ã«ãªããŸããå€ããŠã
ããããããŸããããROM/RAM ããã³ã¯åãæ¿ãã§åäœãããããªåŠçç³»ã ãšã
"myfunc" ãéåžžã«é »ç¹ã«åç
§ãããå Žåã"myfunc" ãèŠãããã®ãã³ã¯åã
æ¿ããçºçããªããªã£ãŠåè
ã®æ¹ã軜ããªãããâŠã
ãããã«ãããC ã®ä»æ§ã®ç¯å²ã§ã¯ãªããããªæ°ãããã®ã§ããã
--
---
Takashi SAKAMOTO (PXG0...@nifty.ne.jp)
> ãããèªå倿°ã¯ã¹ã¿ãã¯ã«ããåãããªããšæããŸããïŒ
äºçްãªããã³ãã§ãããregister ã«ã®ãå¯èœæ§ããããŸããlocal 倿°ã§
address ãå¿
èŠãªãå Žåãªã©ã«ã
# -O2 ä»ãã§äœã£ã execute file ã gdb ã§ debug ããŠãããšãregister
# ã«ã®ã£ãŠãããšèŠãã倿°ã®å€ãåç
§ã§ããªããªã£ãŠããŠãããŸã仿¹ãªã
# ãããšæãããšãã
gcc ç¬èªæ¡åŒµã®ãã®ã§ãè¯ããã°ã
__attribute__ ((format (printf, x, y)))
ã£ãŠããã®ã¯ã©ãã§ããããïŒãinfo ããã¥ã¢ã«ã§ã¯
gcc â C Extensions â Function Attributes ã«è§£èª¬ããããŸãã
---------------------------------
å®®å è³¢ (Miyasaka, Masaru)
Asahikawa-City, Hokkaido, Japan
e-mail : alk...@coral.ocn.ne.jp
ãŸã£ããããã®ãšããã§ããã
ã§ãããããã°çšã®ã³ãŒãããããã°ãã矜ç®ã«ãªãå¯èœæ§ã¯ããã
ã°çšã®ã³ãŒããå
¥ããéãåžžã«ãããŸãã
ãã°ãå
¥ãã«ããããã«å·¥å€«ããåªåã¯å¿
èŠããšæããŸãã...
a += 10;
ã
a + 10;
ãšééããããä»åºŠã¯
#define ADD(x,y) x += y
ãªããŠãã¯ããçºæããã®ã§ãããã...?
--
"MIYASAKA Masaru" <alk...@coral.ocn.ne.jp> wrote in message
news:a7bhmv$rka$1...@nn-tk103.ocn.ad.jp...
âââââââââââââââââââ
> > 質åïŒïŒ
> > ãªãã§ã颿°å
倿°ã®constã¯ã
> > çç¥æstaticã«ãªããªãã®ã§ããããïŒ
> > ã¹ã¿ãã¯ã«è»¢éããåœä»€ã[ãããã]åºãŠã
> > ãšã£ãŠãåŠçé床ãé
ããªããã§ããã©ã
>
> ããã¯ãautomatic倿°ãconst宣èšããããã
> ç¡çç¢çãã¹ã¿ãã¯äžã«ã³ããŒããå¿
èŠãçºçããŠããã®ã§ã¯ïŒ
ããããããçãè§£ã£ãŠãããªããã§ãã
ç§ãè§£ã£ãŠãªãããã§ããã©ã
ãæžãæããŠé§ç®ãã®constããã¹ã¿ãã¯ã«ã³ããŒãã
å¿
ç¶æ§ãç§ã«ã¯è§£ããªããã§ãã
>
> > const ãã€ãããšãªããšãªããdataãšãªã¢ïŒUNIXã®èšèïŒïŒã«
> > åãããããªãã ããã©ããã£ã±ãã¹ã¿ãã¯ã«ãšã£ãŠãã
>
> éã¢ã»ã³ãã«çµæãèŠããšãdataãšãªã¢ã«ããšã£ãŠã
> ãããã¹ã¿ãã¯é åã«ã³ããŒããªãããŠããããã«èŠããŸããïŒ
ããã§ãã
constãä»ããŠãæžãæããŠã¯é§ç®ããšããã°ã©ãã
æèšããŠããã®ã«ã
ãªãã§ããããã
ãã¹ã¿ãã¯é åã«ã³ããŒããªãããŠãããã®ãã
ç§ã«ã¯è§£ããªãã®ã§ãã
> > 74: 27848018 addiu a0,gp,-0x7fe8
>
> ãã®-0x7fe8ã£ãŠã"myfunc"ãããªãã§ããïŒ
> ïŒoldmac,newmac,Fconst,Fstaticã®å
šãŠã«å
±éããŠååšããŠããŸãïŒ
ããããã¯
"%s\n"ã®äºã§ããoldmacã«ã¯ç¡ãã§ãã
>
>
> > 質åïŒïŒ
> > const char funcname[128] = "myfunc" ;
> > ã
> > static const char funcname[] = "myfunc"
> > ãšãstaticãä»ããããŠã[]ã®ïŒïŒïŒãæžãããªãæ¹æ³
> > æããŠãã ããã
>
> staticã«ããæå³ããªããšæããããäžèšã®éãã
>
> char *funcname = "myfunc" ;
>
> static宣èšããŠããåé¡ã¯å
šããªãã
>
> static char *funcname = "myfunc" ;
ããã§ååãªãã§ããã
C-FAQ 1.32ã®äºãéšäžã«çè§£ããŠæ¬²ãããªãããŠäºã§ã
> > 远èšïŒ
> > èªå倿°ã¯ãã¹ã¿ãã¯ã«ãšããšã¯éããªãã®
> > çªã£èŸŒã¿ã¯ããã§ã¯ããªãã§äžããã
>
> ãããèªå倿°ã¯ã¹ã¿ãã¯ã«ããåãããªããšæããŸããïŒ
> ïŒãã®ã«ãŒã«åæã«å€ãããããšããªã«ãŒã·ãã³ãŒã«ãåºæ¥ãªããªãã
ã
ã
(^^;
> ïŒ
ãã£ãšãããã¯ããèªå倿°ãã¹ã¿ãã¯ã«åããããã£ãŠæžããš
ãçŽæã§ããããªèŠçŽã¯ç¡ãã£ãŠçªã£èŸŒã¿ããã®ã§ã
é¢åãªã®ã§æžããŸããã
æ£ç¢ºãªèª¬æã¯ã
http://www2s.biglobe.ne.jp/~hig/q_a/Programing_QA03.html#Q3
ã®ã
ã3. C ã§ã¯ã颿°å
ã§å®£èšããèªå倿°ã¯ã¹ã¿ãã¯äžã«ç¢ºä¿ãããã®ã? ã
ãããèªã¿ãã ããã
>
> 以äžãå
šç¶ãåèã«ã¯ãªããªããšæããŸãããç§ãªãã®åçã§ããã
è§£ã£ãŠãããŠæè¬ããŠãŸãã
> # ä»å㯠printf ã®æžåŒãšåããªãã®ã§ãééã£ãŠãããšããããšãåãããŸ
> # ãããã©ã
> èªåã§ check ããŒã«ãäœããšããææ®µã¯é§ç®ãªã®ã§ããããïŒ cpp ãéãã
> çµæã perl script ãªã yacc&lex ã§äœæããããŒã«ã«æž¡ããªãããŠãã§ãã
é§ç®ã§ãªãã§ãã
ãã²ãäœã£ãŠäžããã
宿ãããªãã°ã
ãã²ãr...@ncos.cp.jpãžãé£çµ¡ããŠãã ããã
äœ¿çšæš©ãªãã°ãããŒã«åžãå·®ãäžããŸãã
ãœãŒã¹ã³ãŒããé ãããªãã°ã
ãã©ã€ã»ã³ã¹æéããçžè«ã«å¿ããŸãã
> 远å ã§ããŒã«ãäœæãããšããã®ããŒã«èªèº«ããã°ãæã£ãŠããå¯èœæ§ãåŠå®
> ã§ããŸãããã©âŠ
> ã€ãªããŠäœ¿ãããæã«ã¯ __FILE__ãã€ãªããŠäœ¿ããããªãæã«ã¯ MY__FILE__
> ãšãªãã®ã¯ãããã¯ããã§æ··ä¹±ã®ããšããšæãã®ã§ãã
> # ã€ãªããŠäœ¿ãããšã¯ããããªãããªãããã®ããªãã
ããŒãšãã ããæ··ä¹±ãæå°éã«çããã
__FILELINE__ã®äœãæ¹ã瀺ããã®ã§ããããããã
>
> > static char funcname[] = "myfunc"ããšèšè¿°ããå Žåãšã
> > auto char funcname[] = "myfunc"ããšèšè¿°ããå Žåã§
>
> ãã®æ¯èŒã¯ãŸããã§ãããâŠãæããã«æ³å®ããŠããäœ¿ãæ¹ãéãããšã
ãã¿ãŸããã
ãªã«ãããŸããã®ã§ããïŒ
constãšstaticã®äœ¿ãæ¹ãšéããè§£ã£ãŠãªããšã
è¢å©ãã«ããã£ãŠããç§ã«ãè§£ãæ§ã«èª¬æé¡ããŸãã
ã©ã®ãžãã®ãæ¯èŒããŸããã§ããïŒ
>
> > æååãread only ãšããŠäœ¿çšããå Žåã
> > static char funcname[] = "myfunc"ããšèšè¿°ããå Žåãšã
> > static const char funcname[] = "myfunc"ããšèšè¿°ããå Žåã§
>
> ãã¡ãã¯ãread-only ãšããŠäœ¿çšãããããšããæå³ã倿ããªããšã§ããªã
> æäœã§ããããC compiler ãã©ã£ã¡ãæ£ããããå€å®ããã®ã¯ãå°é£ã§ã¯ã
> ããŸãããïŒ
ã¯ããC compiler ã«ã¯è§£ããŸããã
ã§ããã
ããã°ã©ãã«ã¯ãè§£ã£ãŠããã¯ãã§ãã
ã ããã
ããã°ã©ãã«ãconstãšæžããšèšã£ãŠããã€ãããªãã§ããããã
>
> ãŸãã
>
> const char funcname[] = "myfunc" ;
> static const char funcname[] = "myfunc" ;
>
> å士ã«ããŠãã"myfunc" ãäœåŠã«çœ®ãããŠããããæ°ã«ãªããŸããå€ããŠã
> ããããããŸããããROM/RAM ããã³ã¯åãæ¿ãã§åäœãããããªåŠçç³»ã ãšã
> "myfunc" ãéåžžã«é »ç¹ã«åç
§ãããå Žåã"myfunc" ãèŠãããã®ãã³ã¯åã
> æ¿ããçºçããªããªã£ãŠåè
ã®æ¹ã軜ããªãããâŠã
ãã£ãšã
ç§ã¯ïŒµïŒ®ïŒ©ïŒžå±ã§ã
çµèŸŒã¿å±ããã§ãããŸããã
ã§ãããæšæž¬ã§å€§äœè§£ããŸãã
const char funcname[] = "myfunc" ;
ãšèšè¿°ãããšãïŒ
static const char funcname[] = "myfunc" ;
ãšèšè¿°ãããšãïŒã
ããã³ã¯åããã«ã€ãŠã¯ã
宿ž¬å€ã欲ããã§ãã
ãåè
ã®æ¹ã軜ããªãããâŠããã¯æžããªããŠè¯ãã§ãã
>
> ãããã«ãããC ã®ä»æ§ã®ç¯å²ã§ã¯ãªããããªæ°ãããã®ã§ããã
ããŒãšã
èšèªã®ä»æ§ïŒãäœæãã人ã®ïŒåªåã®ç¯å²å€ãš
ã³ã³ãã€ã©ïŒãäœæãã人ã®ïŒåªåã®ç¯å²å€ãšã
Cããã°ã©ã ïŒãäœæãã人ã®ïŒåªåã®ç¯å²å€ãšã
ãããŸããã
äœãã
誰ã®ã
ç¯å²å€ãšãèãã§ããã
> ---
> Takashi SAKAMOTO (PXG0...@nifty.ne.jp)
ââââââââââââââââââ
> ã§ãconst ãä»ããã°ãæžãå€ããªããšå®£èšããããã ãã
> ã³ã³ãã€ã©ãããããã¹ã¿ãã¯ãžã®è»¢éã³ãŒããçæãã
> çç±ãç§ã«ã¯è§£ããªãããšèšã£ãŠããã®ã§ãã
constã€ãã倿°ã«ã¯ä»£å
¥ã¯ã§ããŸãããåæåã¯ã§ããŸãã
äŸãã°
int func(int in)
{
const int new_in = in - 1; /* ããã¯åæå */
/* ãã®é¢æ°å
ã§ã¯ new_in æžãæãäžå¯
inã¯æžãæãOK */
/* åŠç */
if (new_in > 0) /* çµäºæ¡ä»¶ */
return func(new_in); /* ååž°! */
else
return new_in;
}
ãã®é¢æ° func()ã¯ååž°åŒåºãããŠãããããnew_inã¯èªå倿°ã§ããå¿
èŠã
ãããŸããããã§ãªããš func()ãåå
¥å¯èœã«ãªããæå³ããåäœãããŸããã
以äžãconstã€ãã®èªå倿°ã®å¿ ç¶æ§ã®äžäŸã§ããã
ã§ããã®äŒç» äœã
æšè圊
ssa...@dekaino.net
ãªãããå
šç¶è©±ããåã¿åããªãã®ã§ã
æŽå²çïŒç§ã®è§£éã®ïŒé ããã£ãŠèª¬æããŸãã
ïŒïŒïŒ ïŒïŒ²ã®æä»£ã§ã¯ã§ããªãã£ãã
autoã®éæäœåã®åæåããïŒïŒ£ã§åºæ¥ãæ§ã«ãªã£ãã
â»ããã¯äŸ¿å©ã ã
http://www.catnet.ne.jp/kouno/c_faq/c1.html
ïŒïŒïŒ ã ãããšãã£ãŠã
autoã®éæäœåã®åæåãå€çšãããªã
åŠçé床ã®å£åãšã¹ã¿ãã¯ã®æµªè²»ãæãäºã«ãªãã
http://www.catnet.ne.jp/kouno/c_faq/c1.html
ïŒïŒïŒ constã§é¢æ°å
ã®èªå倿°ã修食ãããªãã°ã
staticãä»ããæ¹ãè¯ãå Žåãå€ãã
http://www.st.rim.or.jp/~phinloda/cqa/cqa14.html
(4) åæå€ãæã€ïŒåæåãããïŒèªå倿°ã«ã
constãä»ããŠãã
åŠçé床ã®å£åãšã¹ã¿ãã¯ã®æµªè²»ã®è§£æ±ºã«ã¯ã
ãªãã®åœ¹ã«ãç«ããªãã
ç¹ã«éæäœåã«å¯ŸããŠã
constã ãä»ããŠstaticãä»ããªããšã
åŠçé床ã®å£åãšã¹ã¿ãã¯ã®æµªè²»ã¯é¡èã§ããã
ïŒïŒïŒããã§ããã
(a) static à const ç§ã§ãè§£ã
(b) static à ïŒconst ç§ã§ãè§£ã
(c) auto à !const ç§ã§ãè§£ã
(d) auto à const â
ç§ã«ã¯ãè§£ããªã
(d) ã®ãããã颿°å
ã§ã®ã¿é åã確ä¿ãããããããã®é åãconstã§
ãã£ãŠã»ããã
æžãæããŠã¯é§ç®ã®constãªããžã§ã¯ããã
ãããããæžãæãå¯èœãªã¹ã¿ãã¯é åã«ã³ããŒããªããã°ãªããªã
å¿
ç¶æ§ãç§ã«ã¯è§£ããªãã
â»ã¹ã¿ãã¯æ¶è²»ãšã転éåŠçå®è¡æéãç ç²ã«ããŠãŸã§ã
ãæžãæããŠã¯é§ç®ãïœïŒãread only]
ã®ãconstãªããžã§ã¯ãããªãã§ã
ã¹ã¿ãã¯é åã«ã³ããŒããã®ã ãã
ãšèšãã®ããç§ã®çåã§ãã
倪ç°ããã
颿°ã®åŒæ°å®çŸ©ã®æã§ãããŒã¿é åã®èšè¿°ãåºæ¥ãã®ã¯
registerã ãã®ã¯ãã
>ãã颿°å
ã§ã®ã¿é åã確ä¿ããã
ã¹ã¿ãã¯ã®è¡šçŸãããŠããã§ããã
é§ç®ã§ããã°ã
ãèªå倿°ãæ ŒçŽãããé åãã§ãããã§ããã©ã
>ããããã®é åãconstã§ãã£ãŠã»ãã
ãã®é åãæžãæããŠã¯é§ç®ã£ãŠäºã§ããããã
> å Žé¢ã ã£ãŠãããããããŸãã
ç¡ãã§ãã
ãããªããŠãã
ããããã¯ç¡ãã§ãã
ã颿°çªå
¥æã«ãã¹ã¿ãã¯ã«ããããæžãæããŠã¯é§ç®ã®ããŒã¿è»¢éã
ããªããã°
ãªããªãå Žé¢ã®ãããããã®å
ã®äžã€ã
ç§ã«æããŠãã ããã
ããã¯ç§ã®è¡šçŸã ãã
倧ç°ããã®è¡šçŸã®ã
ã ãã颿°å
ã§ã®ã¿é
åã確ä¿ãããããããã®é åãconstã§ãã£ãŠã»ãã
å Žé¢ã ã£ãŠãããããããŸãã
ã
ã£ãŠã©ããªå Žé¢ïŒïŒïŒïŒ
ç§ã«ã¯ãæãã€ããªãã
> --
> 倪ç°çŽ(Junn Ohta) (æ ª)ãªã³ãŒ/æ°æšªæµäºæ¥æ
> oh...@sdg.mdd.ricoh.co.jp
ââââââââââââââââââ
tabe wrote:
> æè¬ããŠãŸãã
> ç§ã®çåãäžçªæ£ç¢ºã«çè§£ããŠãããã®ã¯ã
> ç°æããã§ãã
ãã£ãšããããªããšã¯ç¡ãããããªãããªïŒ(^^;
> > #define __DEBUGPRINT__ printf(以äžç¥)
> > ãšããŠ
> > __DEBUGPRINT__ ;
> > ã§ãå¯ã®ã¯ãã
> ãããã颿°ã£ãœãããŠãæ©æ¢°çã«ã
> 颿°ã®é ã«ããããããšå
¥ããã®ã«ã¯äžçªæ¥œã§ããã
> å¯å€åŒæ°ã®ãã³ãããããæã¯ãã¡ããšé£ç¹ã§ããã
ããã¯ããããã°æã«æããå·¥æ°ãšã®ããããã ãšæãã
ãããã°æã«ãããã°ã«ãŒãã³ã®ãããã°ã«è¿œãããããã¯ãã·ããšïŒ
ãããå¯å€åŒæ°ã®ãã³ããããããªãã__DEBUGPRINT__ã®åŸã«
printf("line:%d æžåŒ",__LINE__,ïœ);
ãšãæžåŒã®çŽåŸãæ°å€ã«ãããã°ãã³ã³ãã€ã©ãæããŠãããããã
ãªãããªïŒïŒåçŽãªã³ãŒãã£ã³ã°ãã¹ã
ãã®äŸãif(宿° == 倿°)ã ãšæããïŒäœæ³
ïŒç§ã¯å®ããªããã©(ç¬)ïŒ
> > > 質åïŒïŒ
> > > ãªãã§ã颿°å
倿°ã®constã¯ã
> > > çç¥æstaticã«ãªããªãã®ã§ããããïŒ
> > ããã¯ãautomatic倿°ãconst宣èšããããã
> > ç¡çç¢çãã¹ã¿ãã¯äžã«ã³ããŒããå¿
èŠãçºçããŠããã®ã§ã¯ïŒ
> ããããããçãè§£ã£ãŠãããªããã§ãã
> ç§ãè§£ã£ãŠãªãããã§ããã©ã
> ãæžãæããŠé§ç®ãã®constããã¹ã¿ãã¯ã«ã³ããŒãã
> å¿
ç¶æ§ãç§ã«ã¯è§£ããªããã§ãã
ããã¯åã«automaticãåªå ããŠããããã§ã¯ïŒ
ïŒã¹ã¿ãã¯äžå¥ã¢ãã¬ã¹ã§ãïŒå床åŒã³åºãããå Žåã«ã
å
容ã®ä¿èšŒãè¡ãå¿
èŠãããããããã
ã³ããŒäœæ¥ãå¿
èŠã«ãªãã®ã§ã¯ãªãã§ããããïŒ
ïŒæè¿æµè¡ã®ã¹ã¿ãã¯ãªãŒããŒãããŒæ»æã«ã察å¿ã§ãããšãïŒ((((^^;ïŒ
ç§ã«ç€ºãã
> http://www2s.biglobe.ne.jp/~hig/q_a/Programing_QA03.html#Q3
> ã®ã
> ã3. C ã§ã¯ã颿°å
ã§å®£èšããèªå倿°ã¯ã¹ã¿ãã¯äžã«ç¢ºä¿ãããã®ã? ã
ã®èª¬æã«ãã£ã
ãããã宣èšãããŠãããããã¯ãžæ£åžžã«å
¥ãããšã«ãïŒäžç¥ïŒ
ãèšæ¶åã確ä¿ããããšãä¿èšŒãããã
ããã®ãŸãŸçããªã®ã§ã¯ïŒ
ïŒãã®ãããconstã§ãã£ãŠãé åã®å
±æãã§ããªãã ãããšïŒ
> > > 74: 27848018 addiu a0,gp,-0x7fe8
> >
> > ãã®-0x7fe8ã£ãŠã"myfunc"ãããªãã§ããïŒ
> > ïŒoldmac,newmac,Fconst,Fstaticã®å
šãŠã«å
±éããŠååšããŠããŸãïŒ
> ããããã¯
> "%s\n"ã®äºã§ããoldmacã«ã¯ç¡ãã§ãã
ã§ããã(^^ã
ãã£ãšããã£ã¡ã§ãã
> 34: 3c050000 lui a1,0x0
ãšããã§ãããã£ãŠSPARCã£ããïŒïŒCPU
> > > 質åïŒïŒ
> > > const char funcname[128] = "myfunc" ;ãã
> > > static const char funcname[] = "myfunc"
> > > ãšãstaticãä»ããããŠã[]ã®ïŒïŒïŒãæžãããªãæ¹æ³
> > > æããŠãã ããã
> > staticã«ããæå³ããªããšæããããäžèšã®éãã
> > char *funcname = "myfunc" ;
> > static宣èšããŠããåé¡ã¯å
šããªãã
> > static char *funcname = "myfunc" ;
> ããã§ååãªãã§ããã
> C-FAQ 1.32ã®äºãéšäžã«çè§£ããŠæ¬²ãããªãããŠäºã§ã
äžç¬ãã³ïŒã£ãŠèãããšæã£ããã©ã
倪ç°ããå®ãŠã®Resã«ãã£ãã®ã§ããšãããã解決ã
ãã ããããçè§£ããŠãªã人ã«ããã°ã©ãã³ã°ãããæç¹ã§
ç¡è¶ã ãšæã(^^;
ïŒããã¡ãããšæããªããšãåŸã
èŠåŽããŸããïŒ
ïŒã£ãŠãä»ã§ãããŠããã§ããã£ãïŒ
èšæ¶åã®ç®¡çã£ãŠãããæå³äžçªéèŠã ãšæããã§ããã
èšèªã£ãŠããã®ãžãã®èªç±åºŠãé«ããããããããã«èŠåãæéã
èŠæ±ãããèšèªã ãšç§ã¯æã£ãŠããŸãã
> > > 远èšïŒ
> > > èªå倿°ã¯ãã¹ã¿ãã¯ã«ãšããšã¯éããªãã®
> > > çªã£èŸŒã¿ã¯ããã§ã¯ããªãã§äžããã
> > ãããèªå倿°ã¯ã¹ã¿ãã¯ã«ããåãããªããšæããŸããïŒ
> > ïŒãã®ã«ãŒã«åæã«å€ãããããšããªã«ãŒã·ãã³ãŒã«ãåºæ¥ãªããªãã
ã
ã
(^^;
> > ïŒ
> ãã£ãšãããã¯ããèªå倿°ãã¹ã¿ãã¯ã«åããããã£ãŠæžããš
> ãçŽæã§ããããªèŠçŽã¯ç¡ãã£ãŠçªã£èŸŒã¿ããã®ã§ã
> é¢åãªã®ã§æžããŸããã
> æ£ç¢ºãªèª¬æã¯ã
> http://www2s.biglobe.ne.jp/~hig/q_a/Programing_QA03.html#Q3 ã®ã
> ã3. C ã§ã¯ã颿°å
ã§å®£èšããèªå倿°ã¯ã¹ã¿ãã¯äžã«ç¢ºä¿ãããã®ã? ã
> ãããèªã¿ãã ããã
ãšããããèªãŸããŠããã ããŸããm(__)m
ç§çã«ã¯ããªã«ãŒã·ãã³ãŒã«ãã¡ãããšåºæ¥ãã°ãã©ãã§ãå¯(ç¬)
Takashi SAKAMOTO wrote:
> > ãããèªå倿°ã¯ã¹ã¿ãã¯ã«ããåãããªããšæããŸããïŒ
> äºçްãªããã³ãã§ãããregister ã«ã®ãå¯èœæ§ããããŸããlocal 倿°ã§
> address ãå¿
èŠãªãå Žåãªã©ã«ã
ããããã°ããããªã®ããããŸãããïœïŒregister屿§
x86ããŒã¹ã§ãã£ãŠããšãregister宣èšèªäœãå¿äœãªããŠã
ãã£ããå¿ããŠãŸãã(ç¬)
> # -O2 ä»ãã§äœã£ã execute file ã gdb ã§ debug ããŠãããšãregister
> # ã«ã®ã£ãŠãããšèŠãã倿°ã®å€ãåç
§ã§ããªããªã£ãŠããŠãããŸã仿¹ãªã
> # ãããšæãããšãã
äžæä»¥äžåã«MS-C 3.0ã«ããããŸãã(^^;
ã¯ãã¹ãªãã¡ã¬ã³ã¹ããŒãã«ãããããŒã«ã«å€æ°ã®ã¢ãã¬ã¹èŠã€ããŠã
ãããã¬ã§èŠãŠãããå®ã¯registeräžã§æäœãããŠãã£ãŠäºãã
ãã ãã©ã¡ãã«ããããªã«ãŒã·ãã³ãŒã«ããéã«èšæ¶åä¿æãã¡ãããš
è¡ãããã®ã§ããã°ãç§çã«ã¯ãã£ãïœã§ãã
æ¬æ¥ã®çãã¯ãtabeããã®ç§å®ãŠã®resã«ãããŸãã
tabe wrote:> ã«ã³ããå ¥ããã
> ã«ã³ããå
¥ãå¿ããããã
> å
¥ãå¿ãã鲿¢ããæ¹æ³ããããŸãããïŒãš
> èããŠããã®ã§ãã
çµå±ãæååãªãã©ã«ã®é£çµãæå¶ãããã®ãã
ã«ã³ãã®å
¥ãå¿ãã鲿¢ãããã®ããã©ã¡ããªãã§ãããïŒ
> ãšèšãç§ã®åžæã§ãã
ç§ã®åžæãšã¯éããŸãã
> ãããœã³ã®ç岡 ããã¯ãæããçµã¿èŸŒã¿ç³»ã ãšæããŸãããã
> ã¹ã¿ãã¯ã®è²Žéãã¯ãåç¥ã§ãããã
çµã¿èŸŒã¿ç³»ã§ã¯ãããŸããããã¹ã¿ãã¯ã®è²Žéãã¯ç¥ã£ãŠããã€ããã§ãã
> 颿°å
ã§read only ã®æååã¯
> char funcname[128] = "myfunc" ïŒ ãšæžããŠã»ãããªã
> static const char funcname[] = "myfunc"ããšæžããŠæ¬²ããã
æ°æã¡ã¯ããããã§ããããŸããããã³ã³ãã€ã©ã®ä»æ§ã®æçºã«ããŠã
ãããããªãã§ãããã
char funcname[128] = "myfunc";
ãšããæžãæ¹ããCã®ä»æ§ãšããŠæ£åœã§ãã以äžãçŠæ¢ããããšã¯ç¡çã ãšæãã®ã§ããã
(1)ïœ(4)ã«ã€ããŠã¯ç°çŸ©ãããŸããããšãããããã®ã
ããã«ç°çŸ©ã®ãã人ã¯ããã«ã¯ããªãã§ãããã
> ã颿°çªå
¥æã«ãã¹ã¿ãã¯ã«ããããæžãæããŠã¯é§ç®ã®ããŒã¿è»¢éã
> ããªããã°
> ãªããªãå Žé¢ã®ãããããã®å
ã®äžã€ã
> ç§ã«æããŠãã ããã
(a) ãã®é¢æ°ã®è€æ°ã®ã€ã³ã¹ã¿ã³ã¹ãåæã«ååšãã
(b) (a)ã®ããããã®é¢æ°ã€ã³ã¹ã¿ã³ã¹ã§åºæã®ããŒã¿
ãçæããŠå©çšããã
(c) (b)ã®ããŒã¿ãconstã§ãã£ãŠã»ãã
ãšããæ¡ä»¶ãæç«ãããšãã§ããã
(a)ã«ã€ããŠã¯ãçŽæ¥ãããã¯éæ¥ã«ååž°åŒã³åºããè¡
ã颿°ãããããã¯staticãªé åãå
±æãããããªãã«
ãã¹ã¬ããã§åŒã³åºããã颿°ã§æç«ããã§ãããã
(b)ã«ã€ããŠã¯ãããšãã°ãã®é¢æ°ã®å
éšã§å®æ°ãšãªã
å€ãå©çšããããããã®å®æ°ã颿°åŒæ°ã«æŒç®ãããã¯
ãã£ã¹ããæœããŠåŸããããããªãã®ã§ãã£ãå Žåãªã©
ã§ããããã¡ãããããã®ã宿°ããå©çšãããã¹ãŠã®
å Žé¢ã«ããšã®é¢æ°åŒæ°ãçšããåŒãæžããŠãããããã§
ããããã®åŒãè€éãªããããã(äžåºŠã ã)èšç®çµæã
ã¹ã¿ãã¯ã«è»¢éãã䟡å€ãããããšã
(c)ã«ã€ããŠã¯ãšãã«èª¬æã®å¿
èŠã¯ãªãã§ãããã倿Ž
ãããªãå€ã«ã¯ç¡æ¡ä»¶ã«constãä»ãããã
> 颿°ã®åŒæ°å®çŸ©ã®æã§ãããŒã¿é åã®èšè¿°ãåºæ¥ãã®ã¯
> registerã ãã®ã¯ãã
ã? constã䜿ããŸãã...???
ã䜿ãã®åŠçç³»ã®ã€ã³ã¯ã«ãŒããã¡ã€ã«ãèŠããšé¢æ°ã
ããã¿ã€ãã«constã®èšè¿°ããããããããŸããã?
> >ãã颿°å
ã§ã®ã¿é åã確ä¿ããã
> >ããããã®é åãconstã§ãã£ãŠã»ãã
> > å Žé¢ã ã£ãŠãããããããŸãã
> ç¡ãã§ãã
> ãããªããŠãã
> ããããã¯ç¡ãã§ãã
ãããããããã©ããã¯è©äŸ¡ã®åããããšãããããã
ãŸããããå°ãªããšããäžã«ç§ã瀺ããäŸã¯ãconstãª
ãèªåçã«staticã«ãªã仿§ã®ã»ããããããåŠå®ãã
ã«ãã
ãã¶ããªãµã³ãã«ã§ãããšæãã®ã§ããã©ãã
fj.comp.lang.cã®èšäº<a7cmba$aht$1...@bgsv5906.tk.mesh.ad.jp>ã§
ta...@mug.biglobe.ne.jpããã¯æžããŸããã
> ãæžãæããŠé§ç®ãã®constããã¹ã¿ãã¯ã«ã³ããŒãã
> å¿
ç¶æ§ãç§ã«ã¯è§£ããªããã§ãã
ãconstãã¹ã¿ãã¯ã«ã³ããŒãããã®ã§ã¯ãªããŠããäœ
ãããã®å€ãã¹ã¿ãã¯ã«ã³ããŒããŠããã®çµæãconst
ã«ãªããã§ãã
ãã®ãäœãããã®å€ããæ±ããããã«ã³ã¹ãããããã
ããªå Žåããããã¯ãã®ãäœãããã®å€ããäœåºŠãæ±ã
ãªããã°ãªããªãå Žåã«ã¯ããã¹ã¿ãã¯ã«ã³ããŒããã
ã³ã¹ãããããŠãåŒãåãããšãããããã§ãã
ããã§ããŸã ãå¿ ç¶æ§ããèŠããŸããã?
> # -O2 ä»ãã§äœã£ã execute file ã gdb ã§ debug ããŠãããšãregister
> # ã«ã®ã£ãŠãããšèŠãã倿°ã®å€ãåç
§ã§ããªããªã£ãŠããŠãããŸã仿¹ãªã
> # ãããšæãããšãã
ã¡ãããšçžåœããæ å ±ã¯åºåãããŠããã¯ããªãã§ããã©ãã.
gcc-2.8.0 + gdb-4.13 (x86 a.out format) ã§ãã£ã詊ããŠã¿ãŸããã,
print 倿°å
ã§ %eax ã«ããååšããªãå€ãã¡ãããšç¢ºèªåºæ¥ãŸãã.
# å€ãããŒãžã§ã³ãææŸããªãçç±ã®äžã€ :-)
gdb ã®ããã¥ã¢ã«ã«ããã¬ãžã¹ã¿å€æ°ã¯èªããªãããšãããããšããã£ãŠ, å®
éåæã® gdb ã¯èªããªããŠ, ãã€é ãããããã, èªããããããšãã§æå
ããŠãã®ã«ãããŸããã€é ãããèªããªããªã£ãŠããšããâŠ.
--
Kazuo Fox Dohzono / doh...@hf.rim.or.jp
ããã¥ã¢ã«ããã§ããïŒãgcc ããã¥ã¢ã«ã®æ¥æ¬èªèš³ã£ãŠã
ç§ã¯ãŸã äžåºŠãèŠãããšç¡ããã§ããã©(^^;ã
http://www.sra.co.jp/wingnut/gcc/index.html
ã«ãããŸãããããšã¯
ftp://ftp.ascii.co.jp/pub/GNU/
ã«åçš®GNUããŒã«ã®æ¥æ¬èªèš³ãããTeXinfoããããŸãã
--
/*-------------------------
alf...@sainet.or.jp
å²¡åŽ æ¬¡æ
-------------------------+/
MIYASAKA Masaru wrote:
> tabe <ta...@mug.biglobe.ne.jp> wrote in message
> news:a7ckqt$94g$1...@bgsv5906.tk.mesh.ad.jp...
> > ããããïœïœïœãªãã§ãæããã§ããã
> > ãšããã§ãæ¥æ¬èªã§ããïŒ
> ããã¥ã¢ã«ããã§ããïŒãgcc ããã¥ã¢ã«ã®æ¥æ¬èªèš³ã£ãŠã
> ç§ã¯ãŸã äžåºŠãèŠãããšç¡ããã§ããã©(^^;ã
infoã®æ¥æ¬èªèš³ã¯ç§ãèŠãããšç¡ããã©ã
man ã®æ¥æ¬èªèš³ãªããFreeBSDã®ããŒãžã«ãããŸãã
http://www.jp.freebsd.org/man-jp/search.html
ããããããããªã®èŠã€ããŸããã
-Wformat
printf, scanf ãªã©ãžã®åŒã³åºãã«å¯ŸããŠãäžãããã
åŒæ°ãããã©ãŒãããæååã®æå®ãæºè¶³ããåãæã£
ãŠããããæ€æ»ããŸãã
ãšãè£ã§æ€çŽ¢ããŠãããããããªãšããã«ãã£ãã
ããããããã
http://www.sra.co.jp/wingnut/gcc/
ã¡ãªã¿ã«ããæ¢ãã®ãã®ã¯ãgcc-j.info-10 ã®äžã«ããããã§ãã
å ·äœçãªäŸãšããŠã以äžã®xãªããŠãããã§ããã?
typedef int keytype;
void quicksort(keytype a[], int first, int last)
{
int i, j;
keytype t;
const keytype x = a[(first + last) / 2];
i = first; j = last;
for (;;) {
while (a[i] < x) i++;
while (x < a[j]) j--;
if (i >= j) break;
t = a[i]; a[i] = a[j]; a[j] = t;
i++; j--;
}
if (first < i - 1) quicksort(a, first, i - 1);
if (j + 1 < last) quicksort(a, j + 1, last);
ç§ã¯ãèšèªã® const ã¯ãèšèªä»æ§äžã®å€±æã«è¿ãããªããšãã
æ°ãããŸããvolatile ã¯ããããã©ã
In article <a7e3cb$29r$1...@ns.src.ricoh.co.jp>
oh...@src.ricoh.co.jp (Junn Ohta) writes:
> (b)ã«ã€ããŠã¯ãããšãã°ãã®é¢æ°ã®å
éšã§å®æ°ãšãªã
> å€ãå©çšããããããã®å®æ°ã颿°åŒæ°ã«æŒç®ãããã¯
> ãã£ã¹ããæœããŠåŸããããããªãã®ã§ãã£ãå Žåãªã©
> ã§ããããã¡ãããããã®ã宿°ããå©çšãããã¹ãŠã®
> å Žé¢ã«ããšã®é¢æ°åŒæ°ãçšããåŒãæžããŠãããããã§
> ããããã®åŒãè€éãªããããã(äžåºŠã ã)èšç®çµæã
> ã¹ã¿ãã¯ã«è»¢éãã䟡å€ãããããšã
ãããªã®ãå¥ã«ã³ã³ãã€ã©ãè§£æããŠãåæã«ããã°ããã®ã§ãã£
ãŠã人éã«ãããã const ãšæžããŠãããå¿
èŠã¯ãªãã§ããã
ã€ãŸããã³ã³ãã€ã©ã®æè¡ãé²ãã°ãconst ã¯äžèŠã«ãªããšã
ä»ã®æè¡ãç¹ã«éšåè©äŸ¡ç³»ãªããã颿°ãè¶ããŠäžå€éãèŠã€ãã
ãšãã§ããŸãã
http://compose.labri.fr/prototypes/tempo/
ä»ã®ã³ã³ãã€ã©ã§ãconst ãšæžããæãšæžããŠããªãæã§å®è¡å¹ç
ãã©ã®ãããå€ããã®ã§ãããïŒ
ã³ã³ãã€ã©ã¯ãconst ãšæžããŠãã£ãŠãæžããŠåããšãªããšãããš
ã¯ãconst ããããã°ã©ãã«ãšã£ãŠèš³ã«ç«ã€ãã§ããconst ã®æå³
ã¯ããããã«ãããŠããããªã«èš³ã«ç«ãŠããã人ã¯ããŠãããã§ãã
ãããäžè¬åº¶æ°ã®ããã°ã©ãã«ã¯é£ããããããªãããªããç§ãèª
åã®ïŒ£ã®ããã°ã©ã ã§ããã㯠const ãšæžãããããšæã£ãããš
ããªãããæžããèšæ¶ã¯ãªãã§ãã
çµå±ãã³ã³ãã€ã©ã人éããããŸã圹ã«ã¯ç«ãŠãªããŠãèšèªä»æ§ãš
ããŠããä»äžã€ã ã£ãããªããšããããšã§ãã
ãã€ã³ã¿ã§ãŠããšã話ãããã«èš³ãããããªããªããŸããconst ã®
ãã€ã³ã¿ã® ããã€ã³ã¿ã®å
ã constããã€ã³ã¿ã const ã§ããã€
ã³ã¿ã®å
ã constããããããŸãèãããã¯ãªã話ã§ãã
const ã§ã¯ãªããŠãstatic ãæ¡åŒµããŠãstatic_and_const ã¿ãã
ãªãã®ã ã£ãããROMåã§ãããšããæå³ãã€ããããã£ãããªãã
fj ã®è°è«ãªã®ã§ããèšèªä»æ§ã ããçµãããã§çµããããããªã
ãŠããã®èšèªä»æ§ã¯ãããããããã£ãã®ãããšçºå±ããããã§ãã
> ã䜿ãã®åŠçç³»ã®ã€ã³ã¯ã«ãŒããã¡ã€ã«ãèŠããšé¢æ°ã
> ããã¿ã€ãã«constã®èšè¿°ããããããããŸããã?
ãããæã
ãã³ã³ãã€ã©ã§ããªããŠãããã§ãconst ãå
¥ã£ããã
ã«ã幞ãã«ãªã£ãããšèšãããã§ãããã
In article <a7eh82$64d$1...@ns.src.ricoh.co.jp>
oh...@src.ricoh.co.jp (Junn Ohta) writes:
> å
·äœçãªäŸãšããŠã以äžã®xãªããŠãããã§ããã?
> typedef int keytype;
> void quicksort(keytype a[], int first, int last)
> {
> int i, j;
> keytype t;
> const keytype x = a[(first + last) / 2];
quick sort ã¯ãããšããšé¢æ°çãªã¢ã«ãŽãªãºã ã ãããåäžä»£å
¥
ã®å€æ°ãåºãŠãããã§ãããããã®ãããã¯ãã³ã³ãã€ã©ãè§£æã§
ããã§ããããããšãåäžä»£å
¥ãšããèãæ¹ã¯ãããšããŠãã
ãauto 倿°ãã¹ã¿ãã¯ã«ããããšãããããªã¡ã¢ãªã®èãæ¹ãšå
äžä»£å
¥ã®èãæ¹ã¯éŠŽæã¿ãŸãããããããæå³ã§ã const ãã€ã
ã€ããªãã ãšæããŸãã
ïŒŒïŒŒãæ°åãéãïŒãããããããããïŒã
ãçæ³¢å€§åŠãé»åã»æ
å ±ããããããã
In article <YAS.02Ma...@kirk.is.tsukuba.ac.jp>,
y...@is.tsukuba.ac.jp (Yasushi Shinjo) writes
>ç§ã¯ãèšèªã® const ã¯ãèšèªä»æ§äžã®å€±æã«è¿ãããªããšãã
>æ°ãããŸããvolatile ã¯ããããã©ã
åãåæèŠã§ãã
åã«ãconstã£ãŠã¿ã€ããããªãããããªããããšèšã£ããããread/
write ã§readã®ã¿ã®ã¡ãœãããæã€ãªããžã§ã¯ãã¿ãããªãã®ã ã
ãšèšãããããšããããŸããããããæå³ã§ã¯ã確ãã«ã¿ã€ããšã
ãŠæ±ãããšã¯ã§ãããšæãã
ãªãã ãã©ãconst ã£ãŠã®ãã¿ã€ããšããŠã¿ããšãããããã¿ã€ã
ã«çŽäº€ããã¿ã€ããšããŠçŸãããã§ãããããããå°å
¥ãããšãã
ãã°ã©ã èªäœã®è€éããäžããã®ã¯åœç¶ãªã®ã ãšæããŸãã
>ã³ã³ãã€ã©ã¯ãconst ãšæžããŠãã£ãŠãæžããŠåããšãªããšãããš
>ã¯ãconst ããããã°ã©ãã«ãšã£ãŠèš³ã«ç«ã€ãã§ãã
#define CONST_NAME 322 ã®ä»£ãããšããæå³ã§ã¯åœ¹ã«ç«ã¡ãŸãããã
ããã¯ããããŸãã
ã§ãããã以å€ã¯ããªããåå·ççãªäœ¿ãæ¹ãªãã ããª...
ç¹ã«ããã€ã³ã¿ã®å
ã®å€æŽãé²ãã¿ãããªäœ¿ãæ¹ã« const ã
䜿ãå Žåã«ããæããŸãã
char *strcpy __P((char *, const char *));
ãšãã£ãŠããã£ãã誰ãã©ãããå Žåã«ããããããã§ããã?
>const ã§ã¯ãªããŠãstatic ãæ¡åŒµããŠãstatic_and_const ã¿ãã
>ãªãã®ã ã£ãããROMåã§ãããšããæå³ãã€ããããã£ãããªãã
const ã®ã¿ã€ããå®äœã«ä»ããªãã®ããããªãããããªãããªãã
char *p = const "string cannot be changed";
if (is_const(*p))
ã¿ãããªäœ¿ãæ¹ãã§ãããã ã£ããããŸã ãé¢çœãã£ããããäžè¬
çã«ã¯å®è£
ã§ããªãã£ãŠåé¡ã¯ãããã©ã
ã§ããããŒããŠã§ã¢çã« write protection ã§ããªãã®ã§ããã°ã
ã¿ã€ããšã㊠const ãå°å
¥ããŠããããããªãã®ã¯ãåœç¶ã ãšã
ãæ°ãããŸãã
>quick sort ã¯ãããšããšé¢æ°çãªã¢ã«ãŽãªãºã ã ãããåäžä»£å
¥
>ã®å€æ°ãåºãŠãããã§ãããããã®ãããã¯ãã³ã³ãã€ã©ãè§£æã§
>ããã§ããããããšãåäžä»£å
¥ãšããèãæ¹ã¯ãããšããŠãã
>ãauto 倿°ãã¹ã¿ãã¯ã«ããããšãããããªã¡ã¢ãªã®èãæ¹ãšå
>äžä»£å
¥ã®èãæ¹ã¯éŠŽæã¿ãŸãããããããæå³ã§ã const ãã€ã
>ã€ããªãã ãšæããŸãã
åäžä»£å
¥ãšã¹ã¿ãã¯ãäž¡ç«ããªããšããèãæ¹ã¯çŽèгçã«æ£ãã
æ°ãããããªããã¯è¯ãåãããªããã©ã
---
Shinji KONO @ Information Engineering, University of the Ryukyus,
PRESTO, Japan Science and Technology Corporation
æ²³éçæ²» @ çç倧åŠå·¥åŠéšæ
å ±å·¥åŠç§,
ç§åŠæè¡æ¯èäºæ¥å£ããããç ç©¶21(æ©èœãšæ§æ)
ko...@ie.u-ryukyu.ac.jpãã:
> ã§ãããã以å€ã¯ããªããåå·ççãªäœ¿ãæ¹ãªãã ããª...
> ç¹ã«ããã€ã³ã¿ã®å
ã®å€æŽãé²ãã¿ãããªäœ¿ãæ¹ã« const ã
> 䜿ãå Žåã«ããæããŸãã
> char *strcpy __P((char *, const char *));
> ãšãã£ãŠããã£ãã誰ãã©ãããå Žåã«ããããããã§ããã?
確ãã«âŠ
> const ã®ã¿ã€ããå®äœã«ä»ããªãã®ããããªãããããªãããªãã
> char *p = const "string cannot be changed";
> if (is_const(*p))
> ã¿ãããªäœ¿ãæ¹ãã§ãããã ã£ããããŸã ãé¢çœãã£ããããäžè¬
> çã«ã¯å®è£
ã§ããªãã£ãŠåé¡ã¯ãããã©ã
CãC++ã®ææ³ãšéããããJavaãªããã£ãŠãããããã
> åäžä»£å
¥ãšã¹ã¿ãã¯ãäž¡ç«ããªããšããèãæ¹ã¯çŽèгçã«æ£ãã
> æ°ãããããªããã¯è¯ãåãããªããã©ã
ããã¯ããã¹ã¿ãã¯ã£ãŠãç©ãã§ãå
åŽã®ã€ã³ã«ããŒã·ã§ã³ãåŒãã§ã
æ»ã£ãŠæ¥ãæã«ç©ãã ãã®ãåãå Žæã«ã¡ãããšæ®ã£ãŠãããã®ããã
ããã§ããããšãããåäžä»£å
¥ã§æžãæããªããšãããšç©ãäžæ¹ã ãã
ã©ãã©ã䌞ã°ããããªã(æŠå¿µçã«ã¯)ãã ããåãå Žæã«ããã£ãŠãã
ããšãããªããªã£ãŠãå¬ãããªãã
ãšããæããããŸããâŠ ä¹ é
Yasushi Shinjo wrote:
> ç§ã¯ãèšèªã® const ã¯ãèšèªä»æ§äžã®å€±æã«è¿ãããªããšãã
> æ°ãããŸããvolatile ã¯ããããã©ã
> (äžç¥)
> çµå±ãã³ã³ãã€ã©ã人éããããŸã圹ã«ã¯ç«ãŠãªããŠãèšèªä»æ§ãš
> ããŠããä»äžã€ã ã£ãããªããšããããšã§ãã
ãïœãšã倿°ã®constã«é¢ããŠã¯ãåæãããŸããã
颿°ã®åŒæ°å®£èšã§ã¯åæããããããªïŒ
ç§ã¯ãåŒæ°ã®å宣èšã«ãããconstã¯ã颿°ã®äŸåé¢ä¿ïŒäžŠå床æ€åºã®ããã®
圹å²ãæãããŠããšåæã«æã蟌ãã§ãŸã(ç¬)
ãã ããããçªãè©°ããŠè¡ããšãåé¡ã«ãªããããã®ãã
static宣èšããã倿°ã®æ¹ã ã£ããããŠã
(å
šç¶ããªãšã³ãã©ã³ããããªããã ãã(^^;ïŒstatic倿°)
ãšèšãããšã§ãå°æ¥ã«æåŸ
ã£ïŒïŒconstã®æŽ»çš
In article <3C9B3DDF...@coral.ocn.ne.jp>,
Tadamasa Tamura <ta...@coral.ocn.ne.jp> writes
>ç§ã¯ãåŒæ°ã®å宣èšã«ãããconstã¯ã颿°ã®äŸåé¢ä¿ïŒäžŠå床æ€åºã®ããã®
>圹å²ãæãããŠããšåæã«æã蟌ãã§ãŸã(ç¬)
const ãã©ããã¯ãæé©åã«é¢ããŠã¯ãããŸãé¢ä¿ãªãæ°ãããã
宿°ã§ãã£ãŠã倿°ã§ãã£ãŠãã¬ãžã¹ã¿ã«å
¥ããã®ãä»ã®ã¢ãŒãã
ã¯ãã£ãªã®ã§...
ããããalias ã®æ¹ãåé¡ã§ããããèªååã§ããªãéšåã§ããããã
>ãã ããããçªãè©°ããŠè¡ããšãåé¡ã«ãªããããã®ãã
>static宣èšããã倿°ã®æ¹ã ã£ããããŠã
>(å
šç¶ããªãšã³ãã©ã³ããããªããã ãã(^^;ïŒstatic倿°)
ã»ãšãã©å
šéšãstatic 宣èšããã£ãŠã®ã颿°ã«é¢ããŠã¯æ£ãã
æ
床ã§ãããã倿°ã«é¢ããŠããããããªã
thread safe ãšãã®åé¡ã¯ãstatic 倿°ã¯ thread æ¯ã«å¥ã«ç¢ºä¿ãã
ã£ãŠããã°è¯ãã£ããããªæ°ãããããŸãã©ã£ã¡ãã©ã£ã¡ããªã
Shinji KONO wrote:
> >ç§ã¯ãåŒæ°ã®å宣èšã«ãããconstã¯ã颿°ã®äŸåé¢ä¿ïŒäžŠå床æ€åºã®
> >ããã®åœ¹å²ãæãããŠããšåæã«æã蟌ãã§ãŸã(ç¬)
> const ãã©ããã¯ãæé©åã«é¢ããŠã¯ãããŸãé¢ä¿ãªãæ°ãããã
> 宿°ã§ãã£ãŠã倿°ã§ãã£ãŠãã¬ãžã¹ã¿ã«å
¥ããã®ãä»ã®ã¢ãŒãã
> ã¯ãã£ãªã®ã§...
ïŒïŒïŒ
ãããããŠã
ãã¹ã¬ããåå²ã¯äººéãæç€ºããªããã°ãªããªãããšãã
ãã¯1åãããªãããšãèšã£ãåºå®æŠå¿µæã£ãŠãŸãïŒ
å¥ã®ã¹ã¬ããã§è²Žå ãèšã£ãŠãã
> ç¹ã«ããã€ã³ã¿ã®å
ã®å€æŽãé²ãã¿ãããªäœ¿ãæ¹ã« const ã
> 䜿ãå Žåã«ããæããŸãã
>
> char *strcpy __P((char *, const char *));
>
> ãšãã£ãŠããã£ãã誰ãã©ãããå Žåã«ããããããã§ããã?
ããã¯ãããã€ã³ã¿å
ã®å€æŽãé²ããã§ã¯ãªãã
ããã®ãã€ã³ã¿å€æ°ã§ç€ºãå
容ã¯å€æŽãããªãããšãä¿èšŒãããã£ãŠ
èªããŸããïŒïŒãŸããæ®éèªããªãã(ç¬)ïŒ
äŸãã°ãç°¡åã«ããããã«strcpyãšstrcatã ãã䜿ããŸããã©ã
ãstrcpy(b,a) ; âŠâŠâŠâŠâŠ (1)
ãstrcpy(c,a) ; âŠâŠâŠâŠâŠ (2)
ãstrcat(b,d) ; âŠâŠâŠâŠâŠ (3)
ãšãªã£ãŠããå Žåãconst宣èšã ãã§ä»¥äžã®äŸåé¢ä¿ãå°ãåºãããŸãã
ã»(1)ãš(2)ã«ã¯äŸåé¢ä¿ãç¡ã
ã»(3)ã¯(1)ã®åŸã§ãªããã°ãªããªã
ãã£ãŠã
(1)+(3)ãCPU1ã«ã(2)ãCPU2ã«å²ãæ¯ã£ãŠãã
çµæã¯åãã«ãªãã¯ãã§ãããïŒ
ãããç§ã®èšã£ãã颿°ã®äŸåé¢ä¿ïŒäžŠå床æ€åºãã®æå³ã§ãã
å®éã«ã¯ãwriteãšãã®ã·ã¹ãã ã³ãŒã«ã®äŸåæ§ãæ€åºã§ããªãå¯èœæ§ã
ãããã§ããã©ã(ç¬)
> >ãã ããããçªãè©°ããŠè¡ããšãåé¡ã«ãªããããã®ãã
> >static宣èšããã倿°ã®æ¹ã ã£ããããŠã
> >(å
šç¶ããªãšã³ãã©ã³ããããªããã ãã(^^;ïŒstatic倿°)
>
> ã»ãšãã©å
šéšãstatic 宣èšããã£ãŠã®ã颿°ã«é¢ããŠã¯æ£ãã
> æ
床ã§ãããã倿°ã«é¢ããŠããããããªã
>
> thread safe ãšãã®åé¡ã¯ãstatic 倿°ã¯ thread æ¯ã«å¥ã«ç¢ºä¿ãã
> ã£ãŠããã°è¯ãã£ããããªæ°ãããããŸãã©ã£ã¡ãã©ã£ã¡ããªã
(const宣èšãããŠããªã)static宣èšããã倿°ã£ãŠã
ãã®ã«ãŒãã³ãæããŠãå€ãä¿æããé¢ä¿äžã
å®è¡é åºã®äŸåæ§ãçºçããŸãã®ã§ãthread safeã«ãªããªããšæããŸãã
ãšãç§ãªãã®constãžã®æåŸ
ã§ããã
In article <3C9B74E2...@coral.ocn.ne.jp>,
Tadamasa Tamura <ta...@coral.ocn.ne.jp> writes
>> char *strcpy __P((char *, const char *));
>> ãšãã£ãŠããã£ãã誰ãã©ãããå Žåã«ããããããã§ããã?
>äŸãã°ãç°¡åã«ããããã«strcpyãšstrcatã ãã䜿ããŸããã©ã
>ãstrcpy(b,a) ; âŠâŠâŠâŠâŠ (1)
>ãstrcpy(c,a) ; âŠâŠâŠâŠâŠ (2)
>ãstrcat(b,d) ; âŠâŠâŠâŠâŠ (3)
>ãšãªã£ãŠããå Žåãconst宣èšã ãã§ä»¥äžã®äŸåé¢ä¿ãå°ãåºãããŸãã
>ã»(1)ãš(2)ã«ã¯äŸåé¢ä¿ãç¡ã
>ã»(3)ã¯(1)ã®åŸã§ãªããã°ãªããªã
ããã£ãŠãb ãå®ã¯ a ã®å€æ°ã®ã¢ãã¬ã¹ãæããŠããå Žåã(1)
ã¯ãa ã®ã¢ãã¬ã¹ãæžãæããŠããŸããŸããããã¯ãstrcpy(&a,a)
ãšãã®å Žåã§ããããstrcpyã ãšå€ãªæãããããã©ã宣èšããã¯
ããããã§ããa èªäœã¯constã§ãªããããæžãæããã®ã¯okã ãã
ã³ã³ãã€ã©ã¯strcpyã ãšç¥ããªããã(ç¥ã£ãŠã奎ããããã©ã)
ãªã®ã§ã
>ã»(1)ãš(2)ã«ã¯äŸåé¢ä¿ãç¡ã
ã£ãŠã®ããconst宣èšããå°åºããŠã¯ãããŸãã... ã£ãŠã®ã alias
ã®åé¡ã§ããããC ã¯ããããªã®ã°ã£ãã§ãã
>ãããç§ã®èšã£ãã颿°ã®äŸåé¢ä¿ïŒäžŠå床æ€åºãã®æå³ã§ãã
ã ã£ãããäŸåé¢ä¿ãæç€ºããèšèªã®æ¹ããããªããåäžä»£å ¥ãšãã
>> thread safe ãšãã®åé¡ã¯ãstatic 倿°ã¯ thread æ¯ã«å¥ã«ç¢ºä¿ãã
>> ã£ãŠããã°è¯ãã£ããããªæ°ãããããŸãã©ã£ã¡ãã©ã£ã¡ããªã
>(const宣èšãããŠããªã)static宣èšããã倿°ã£ãŠã
>ãã®ã«ãŒãã³ãæããŠãå€ãä¿æããé¢ä¿äžã
>å®è¡é åºã®äŸåæ§ãçºçããŸãã®ã§ãthread safeã«ãªããªããšæããŸãã
thread æ¯ã«å¥ã«ããã°ãããããåé¡ã¯ç¡ããªããŸããããlock
ããããªããã
ããçšåºŠåçã¯åºããã®ã§ãä»åã¯è¥å¹²ãã£ãã£å ¥ããïœã©ã
tabe wrote:
> 質åïŒïŒ
> ãã®ãã£ä»ãæååãææ¢ãã
> è¯ãæ¹æ³ããåç¥ã®æ¹æããŠãã ããã
ã¹ããªã³ã°ãªãã©ã«ã ãããã£ã€ãã®ã§ãã£ãŠã
äžæ¹ã倿°ã«ããŠããŸãã°åé¡ç¡ãã
ãšããããšã§ããã¡ã€ã«ã®å é ã«
static const FILENAME = __FILE__ ;
ãšå®çŸ©ãã
printf("%s:%d %s\n",FILENAME,__LINE__,funcname);
ãšããã
ïŒ-Wformatããã广äœã(^^;ïŒ
ãŸãã
> char *str[] ={
> "æååã" //ããã§ã«ã³ãå¿ããŸãã
> "ãã£ä»ãã"
> } ;
ã®å¯Ÿçã«ã¯ã
X11/Intrinsic.hãããXtNumberããã£ã±ãã£ãŠã
æ°ã確èªããã£ãŠã®ãããããš(ç¬)
ã¡ãªã¿ã«ã以äžã®éãïŒXtNumber
#define XtNumber(arr) ((Cardinal) (sizeof(arr) /
sizeof(arr[0])))
äžèšã®äŸã§ã¯ã
XtNumber(str)ããæ£ãã','ãä»ããŠããã°ïŒã«ã
','ãä»ãå¿ãããšïŒã«ãªããŸãã
ããã¯ãããªããã»ããµã倿ã§ããŸãã®ã§ã
ããªããã»ããµã§å€å®æãä»ããŠããã°ã
ã³ã³ãã€ã«æ®µéã§èœãšããŸãã
ïŒãã ãæ°ååããã®ãšäœãéããšèšããããšãããŸã§ã ã£ãã(^^ãïŒ
> 質åïŒïŒ
> const char funcname[128] = "myfunc" ; ã
> static const char funcname[] = "myfunc"
> ãšãstaticãä»ããããŠã[]ã®ïŒïŒïŒãæžãããªãæ¹æ³
> æããŠãã ããã
ãã£ããgccã§ãã£ãŠã¿ãŸãããã©ã
> static const char funcname[] = "myfunc" ;
ã£ãŠééã£ãŠãªãã¯ãã§ããïŒ
ïŒããã£ãŠãã³ã³ãã€ã©äŸåã§ããã£ãïŒïŒ
> int func(int in)
> {
> const int new_in = in - 1; /* ããã¯åæå */
> 以äžãconstã€ãã®èªå倿°ã®å¿
ç¶æ§ã®äžäŸã§ããã
è¬ããè§£ããŸããã
ç§ãäœãããã£ãŠãªãã£ãããè§£ããŸããã
const 修食ããåæåã§ã
倿°ãããããäºãèããäºããããŸããã§ããã
宿°ããªãã©ã«ã«ããåæåã°ããèããŠããã®ã§ã
èªå倿°ãšããŠå®£èšãããã®ã§ããéçé åã«ç¢ºä¿ããŠã
å
±æã§ãããšèããŠããŸããã
ïŒãªãã§ãconstã£ãŠååã«ãããã ããã
âèªã¿èŸŒã¿å°çšâã®æå³ãªã®ã ããïŒC-FAQãïŒïŒïŒïŒïŒ
ãã£ãROMã£ãŠååã«ããã°è¯ãã£ãã®ã«ã
ãããããšãå容é åã®èª€è§£ãçºçããããããããé§ç®ã
äœã
æšãããããããšãããããŸãã
ç°¡æœãªäŸãªã®ã§ãçè§£ã§ããŸããã
>
> ã§ããã®äŒç» äœã
æšè圊
> ssa...@dekaino.net
--
> (a) ãã®é¢æ°ã®è€æ°ã®ã€ã³ã¹ã¿ã³ã¹ãåæã«ååšãã
> (b) (a)ã®ããããã®é¢æ°ã€ã³ã¹ã¿ã³ã¹ã§åºæã®ããŒã¿
> ãçæããŠå©çšããã
> (c) (b)ã®ããŒã¿ãconstã§ãã£ãŠã»ãã
> ãšããæ¡ä»¶ãæç«ãããšãã§ããã
ãã®äŸã¯ã
ãäœã
æš@ã§ããã®ãããã®äŸã§çè§£ã§ããŸããã
> > 颿°ã®åŒæ°å®çŸ©ã®æã§ãããŒã¿é åã®èšè¿°ãåºæ¥ãã®ã¯
> > registerã ãã®ã¯ãã
>
> ã? constã䜿ããŸãã...???
K&R2 A8.6.3 颿°å®£èšå
ããã©ã¡ãŒã¿ã®å®£èšæå®ã«ãããŠãèš±ãããå¯äžã®
èšæ¶ã¯ã©ã¹ã¯registerã§ããã
ããŒã¿é åã®ç¢ºä¿ã匷調ããã以äžã®äŸãªãã
ãã³ãšããã®ã§ãããããã
void myfunc(const struct tag hoge) /* ãã€ã³ã¿ã§ã¯ãªãã*/
{
const struct tag hogehoge = hoge ;
}
>äžã«ç§ã瀺ããäŸã¯ãconstãª
> ãèªåçã«staticã«ãªã仿§ã®ã»ããããããåŠå®ãã
> ã«ãã
ãã¶ããªãµã³ãã«ã§ãããšæãã®ã§ããã©ãã
ã¯ãããã
ãã¶ãã§ãã
ãconst㪠ãèªåçã«staticã«ãªã仿§ã®ã»ãããããã¯
以äžã®æ§ã«èšæ£ããŸãã
ãconst修食ãããŠããããã³ã³ãã€ã©ã¯ãã£ãšæé©åããŠæ¬²ããã
äŸïŒ
void myfunc()
{
const char tmp[] = __FILE__ ;
printf("%s\n",tmp) ;
printf("%s\n",tmp) ;
...
printf("%s\n",tmp) ;
}
ãšãããã°ã©ããèšè¿°ãããã
ã³ã³ãã€ã©ã¯
void myfunc()
{
/* tmpã¯ããããªã*/
printf("%s\n",__FILE__) ;
printf("%s\n",__FILE__) ;
...
printf("%s\n",__FILE__) ;
}
ãšè§£éããŠæ¬²ããã
ãstaticããæžãæããŠããã¹ã¿ãã¯é åãå°ãå€ãã«äœ¿ããããŒã¿ãã¹ã¿ã
ã¯é åã«æžã蟌ãããã«å°ãå€ãã®æéããããã ãã ããããããã®ã¯ãšãŠ
ãæ°ã«ãªã(ããããããæžããããã«ãstaticããšæžãã®ã¯ããã )ã
printf()ã®äžã§ãããããšå€§å€ãªããšããã£ãŠãã¹ã¿ãã¯é åãå€ã䜿ã£ããã
åŠçæéãé·ããªã£ãŠãããããããªãããããããã®ã¯æ°ã«ãªããªãã
**********************************************************************
ãšããããšã§ãããçè§£ãã¥ããèãæ¹ã§ããâŠâŠã
--
N-Yas <cep0...@nyc.odn.ne.jp>
"tabe" <ta...@mug.biglobe.ne.jp> wrote in message
news:a7gn0d$nto$2...@bgsv5906.tk.mesh.ad.jp...
> ç°éšã§ãã
ïŒç¥ïŒ
> >äžã«ç§ã瀺ããäŸã¯ãconstãª
> > ãèªåçã«staticã«ãªã仿§ã®ã»ããããããåŠå®ãã
> > ã«ãã
ãã¶ããªãµã³ãã«ã§ãããšæãã®ã§ããã©ãã
> ã¯ãããã
ãã¶ãã§ãã
> ãconst㪠ãèªåçã«staticã«ãªã仿§ã®ã»ãããããã¯
> 以äžã®æ§ã«èšæ£ããŸãã
> ãconst修食ãããŠããããã³ã³ãã€ã©ã¯ãã£ãšæé©åããŠæ¬²ããã
> äŸïŒ
> void myfunc()
> {
> const char tmp[] = __FILE__ ;
> printf("%s\n",tmp) ;
> printf("%s\n",tmp) ;
> ...
> printf("%s\n",tmp) ;
> }
> ãšãããã°ã©ããèšè¿°ãããã
> ã³ã³ãã€ã©ã¯
> void myfunc()
> {
> /* tmpã¯ããããªã*/
> printf("%s\n",__FILE__) ;
> printf("%s\n",__FILE__) ;
> ...
> printf("%s\n",__FILE__) ;
> }
> ãšè§£éããŠæ¬²ããã
ãããªé¢šã«ã¯è§£éã¯ã§ããªãããããªãã§ããïŒ
ç§ã ã£ãããããããããããé¢šã«æžãããã
ããã¯ãã£ãšç°éšãããè§£éããŠã»ãããã®ãšã¯éãè§£éãããŠ
ã»ãããšãã ãšæããŸãã
ãšããã®ã¯ãç§ã ã£ãããããè§£éããŠã»ãããšãã¯
void myfunc()
{
char* tmp = __FILE___;
printf("%s\n",tmp) ;
printf("%s\n",tmp) ;
...
printf("%s\n",tmp) ;
}
ãšæžããŸãã®ã§ã
話é¡ãšã㊠const ã¯ç¡é¢ä¿ãªãããªãšã
äžå¿ã奜ã¿ã§ã¢ã¹ã¿ãªã¹ã¯ã®å·Šå³ã« const ãã€ããŠãããã§ããã©ã
ã©ã¡ãããšãããšãããšããšãconst ããstatic ã®è©±é¡ã§ãããïŒ
__FILE__ ã staticãªããã§ãããã
以äžã§ãã
"N-Yas" <cep0...@nyc.odn.ne.jp> wrote in message
news:a7htlp$iv1$1...@nwall1.odn.ne.jp...
>
> **********************************************************************
> ããŒã¿ãéçé åã«å²ãåœãŠãŠã»ãããã©ãéçé åã«å²ãåœãŠãããã®æå®
> ãstaticãã¯æžããããªãã
ã£ãŠã©ãã§æžããŠãŸãïŒ
> ãstaticããæžãæããŠããã¹ã¿ãã¯é åãå°ãå€ãã«äœ¿ããããŒã¿ãã¹ã¿ã
> ã¯é åã«æžã蟌ãããã«å°ãå€ãã®æéããããã ãã ããããããã®ã¯ãšãŠ
> ãæ°ã«ãªã(ããããããæžããããã«ãstaticããšæžãã®ã¯ããã )ã
ã£ãŠã©ãã§æžããŠãŸãïŒ
ããšãããããã³ãŒããèŠãäºãããŸããïŒ
void func()
{
const struct tag unuse[] = {/* æäœ¿ã£ãŠããã©ä»ã¯æªäœ¿çš
ã*/
0xFF,0FF, .....................................
é³å£°ããŒã¿ãããªããã®åæå€ã
å»¶ã
ãšç¶ã
}
}
äžèšã®ãunuse 倿°ãæé©åã§ãæ¶å»ã§ããã³ã³ãã€ã©ã¯ã
ç§ã®äœ¿ããïŒçš®é¡ã³ã³ãã€ã©ã®äžã«ãããŸããã
ç§ã®èŠãã³ãŒãã§ã¯ã
const ã䜿çšãããã®ã¯ã
ãªãŒããªã³ãªãŒã®è¡šïŒããŒãã«ïŒã«å€ãã
ãå°ãå€ãã®æéãã§æžãŸãªãå Žåãå€ã
ãããŸãã
> printf()ã®äžã§ãããããšå€§å€ãªããšããã£ãŠãã¹ã¿ãã¯é åãå€ã䜿ã£ããã
> åŠçæéãé·ããªã£ãŠãããããããªãããããããã®ã¯æ°ã«ãªããªãã
ïŒïŒïŒ
http://rec.ncos.co.jp/cgi-bin/e000.cgi?183
ã£ãŠãªäºãæžããŠãç§ãã§ããïŒ
> **********************************************************************
>
> ãšããããšã§ãããçè§£ãã¥ããèãæ¹ã§ããâŠâŠã
ãµãŒã
>
> --
> N-Yas <cep0...@nyc.odn.ne.jp>âââââââââââââââââââ
> > ãconst㪠ãèªåçã«staticã«ãªã仿§ã®ã»ãããããã¯
> > 以äžã®æ§ã«èšæ£ããŸãã
> > ãconst修食ãããŠããããã³ã³ãã€ã©ã¯ãã£ãšæé©åããŠæ¬²ããã
ç¥
> ãšããã®ã¯ãç§ã ã£ãããããè§£éããŠã»ãããšãã¯
> void myfunc()
> {
> char* tmp = __FILE___;
> printf("%s\n",tmp) ;
> printf("%s\n",tmp) ;
> ...
> printf("%s\n",tmp) ;
> }
> ãšæžããŸãã®ã§ã
ãã®æžãæ¹ã¯ã
æ¬åããã®æ§ã«ããŒã¿é åã®äºãæ£ããç¥ã£ãŠããäººã®æžãæ¹ã§ãã
ç§ã®èšãããã£ãã®ã¯ã
ããŒã¿ã®å²ãä»ããç¥ããªãããã°ã©ãã
以äžã®ã³ãŒããæžããŠãã
> > äŸïŒ
> > void myfunc()
> > {
;/*ã¹ã¿ãã¯è»¢éåœä»€ãçºçããäºãããã°ã©ãç¥ããã*/
> > const char tmp[] = __FILE__
> > printf("%s\n",tmp) ;
> > printf("%s\n",tmp) ;
> > ...
> > printf("%s\n",tmp) ;
> > }
æé©åã§ãã¹ã¿ãã¯ãšãªã¢ã®tmp[]ãæ¶æ»
ãããŠæ¬²ããã
ãšèšãããšã§ãã
ãã£ãšäŸãäžãããšã
void myfunc()
{
const int a = 1 ;
const int b = 2 ;
cont int c = 3 ;
printf("%d\n",a) ;
printf("%d\n",b) ;
printf("%d\n",c) l;
}
ã¯ãC++ãªããã§ã¯ãèªå倿°a,b,cã¯ã宿°å€ã«ãªãã®ã§ã¹ã¿ãã¯æ¶è²»ã¯ãŒãã§ãã
ãã
Cã ã£ãŠãæé©åããã°å€§æµãäžã®ã³ãŒãregisterã宿°å€ã«ãªã£ãŠ
ã¹ã¿ãã¯æ¶è²»ã¯ãŒãã«ãªããŸãããã
ç§ã®ã³ã³ãã€ã©ã«å¯Ÿããåžæã¯
åæ§ã®æé©åã
é
åããæ§é äœã®è€åäœã§ããã£ãŠæ¬²ããã
ã£ãŠäºã§ãã
ïŒããšãç§ã¯ïŒµïŒ®ïŒ©ïŒžå±ãªã§ãã¹ã¿ãã¯æ¶è²»ããé床ã«èå³ããããŸãã
âââââââââââââââââââââââ
"tabe" <ta...@mug.biglobe.ne.jp> wrote in message
news:a7icl2$2da$1...@bgsv5905.tk.mesh.ad.jp...
> ç°éšã§ãã
> "Masamichi Motoyoshi" <sa...@dsl.gr.jp> wrote in message
> news:a7i9b3$m8h$1...@sv.dsl.gr.jp...
> > æ¬åã§ãã
>
> > > ãconst㪠ãèªåçã«staticã«ãªã仿§ã®ã»ãããããã¯
> > > 以äžã®æ§ã«èšæ£ããŸãã
> > > ãconst修食ãããŠããããã³ã³ãã€ã©ã¯ãã£ãšæé©åããŠæ¬²ããã
> ç¥
> > ãšããã®ã¯ãç§ã ã£ãããããè§£éããŠã»ãããšãã¯
> > void myfunc()
> > {
> > char* tmp = __FILE___;
> > printf("%s\n",tmp) ;
> > printf("%s\n",tmp) ;
> > ...
> > printf("%s\n",tmp) ;
> > }
> > ãšæžããŸãã®ã§ã
> ãã®æžãæ¹ã¯ã
> æ¬åããã®æ§ã«ããŒã¿é åã®äºãæ£ããç¥ã£ãŠããäººã®æžãæ¹ã§ãã
>
> ç§ã®èšãããã£ãã®ã¯ã
> ããŒã¿ã®å²ãä»ããç¥ããªãããã°ã©ãã
ããããããã°ã©ããæžããã³ãŒãã
æ§èœæªããŠããããããªãã®ããªãšæããŸãã
> 以äžã®ã³ãŒããæžããŠãã
> > > äŸïŒ
> > > void myfunc()
> > > {
> ;/*ã¹ã¿ãã¯è»¢éåœä»€ãçºçããäºãããã°ã©ãç¥ããã*/
> > > const char tmp[] = __FILE__
> > > printf("%s\n",tmp) ;
> > > printf("%s\n",tmp) ;
> > > ...
> > > printf("%s\n",tmp) ;
> > > }
>
> æé©åã§ãã¹ã¿ãã¯ãšãªã¢ã®tmp[]ãæ¶æ»
ãããŠæ¬²ããã
> ãšèšãããšã§ãã
ããã§ã¹ã¿ãã¯äžã«tmpããããªãããã«æé©åããããã«ã¯
ã³ã³ãã€ã©ã printf ã®åäœãç¥ã£ãŠããå¿
èŠããããšæããŸããã©ãã
> ãã£ãšäŸãäžãããšã
> void myfunc()
> {
> const int a = 1 ;
> const int b = 2 ;
> cont int c = 3 ;
> printf("%d\n",a) ;
> printf("%d\n",b) ;
> printf("%d\n",c) l;
> }
> ã¯ãC++ãªããã§ã¯ãèªå倿°a,b,cã¯ã宿°å€ã«ãªãã®ã§ã¹ã¿ãã¯æ¶è²»ã¯ãŒãã§ã
ã
> ãã
> Cã ã£ãŠãæé©åããã°å€§æµãäžã®ã³ãŒãregisterã宿°å€ã«ãªã£ãŠ
> ã¹ã¿ãã¯æ¶è²»ã¯ãŒãã«ãªããŸãããã
ãã®ã³ãŒãã§ããã°ãconst ã€ããªããŠã
æé©åãããŠãã¹ã¿ãã¯æ¶è²»éã¯ãŒãã«ãªããŸãã
Cã§ãã
ãªããC++ã«éå®ããã®ãããããŸãããã©ã
éã«ãconst ã€ããŠã
printf("%p\n", &a)
ãšæžãã°ãéåžžã®åŠçç³»ã§ã¯ã¹ã¿ãã¯äžã«å€æ°aã®å®äœããããããšæããŸãã
ãªããªããããã« const ãã€ããããšã倿°ã¯å€æ°ã§ãããªãã®ã§
ã¢ãã¬ã¹ãæã€ããšã¯èª°ãåŠå®ã§ããªãã§ããã
宿°ãã¬ãžã¹ã¿ã¯éåžžã¯ã¢ãã¬ã¹ãæããªãã®ã§ã
å ã®
const char tmp [] = __FILE__;
ãã¹ã¿ãã¯äžã«å®äœãããããã®ã
åãçç±ã ãšæã£ãŠããã®ã§ããã©ãã
tmp[]ã¯auto倿°ã§ããã®ã¢ãã¬ã¹ã¯
tmpã§åç
§ã§ããã£ãŠããšã§ãã
以äžã§ãã
**********************************************************************
ããŒã¿ãã¹ã¿ãã¯é åã«å²ãåœãŠããããšãã¹ã¿ãã¯é åãå°ãå€ãã«äœ¿ãã
ã¹ã¿ãã¯é åã«æžã蟌ãããã«æéãå°ãå€ãã«ãããã®ããšãŠãæ°ã«ãªãã®
ã§éçé åã«å²ãåœãŠããã®ã ãããã¡ãã¡ãstaticããšæžãã®ã¯é¢åãªã®ã§ã
æžããªããŠãéçé åã«å²ãåœãŠãããã«æ¹è¯ããŠã»ããã
**********************************************************************
ãšããããã«ãªããšæããŸããéããŸãã?
At Fri, 22 Mar 2002 00:12:34 +0900,<a7ctjf$h2u$1...@bgsv5906.tk.mesh.ad.jp>
tabe wrote:
>
> æžãæããŠã¯é§ç®ã®constãªããžã§ã¯ããã
> ãããããæžãæãå¯èœãªã¹ã¿ãã¯é åã«ã³ããŒããªããã°ãªããªã
> å¿
ç¶æ§ãç§ã«ã¯è§£ããªãã
å¿
ç¶æ§ãç§ã«ã¯ããããªãããéçé åã«å²ãåœãŠãããã«ããŠã»ããããšã
ãã®ã§ã¯ãã¡ã§ãããå¿
ç¶æ§ãããããšãªããããšãããŒã¿ãã¹ã¿ãã¯é åã«
å²ãåœãŠãã®ãééããšããããã§ã¯ãªãã®ã§ãããã
At Sun, 24 Mar 2002 01:27:09 +0900,
tabe wrote:
>
> ç§ã®èŠãã³ãŒãã§ã¯ã
> const ã䜿çšãããã®ã¯ã
> ãªãŒããªã³ãªãŒã®è¡šïŒããŒãã«ïŒã«å€ãã
> ãå°ãå€ãã®æéãã§æžãŸãªãå Žåãå€ã
ãããŸãã
ããããå Žåã¯ãstaticããšæžãã°ããããšããã ãã®ããšã ãšæããŸããã
éãã®ã§ãã?
--
N-Yas <cep0...@nyc.odn.ne.jp>
"N-Yas" <cep0...@nyc.odn.ne.jp> wrote in message
news:a7jqka$1i7u$1...@nwall1.odn.ne.jp...
> tabe wrote:
> > ç§ã®èŠãã³ãŒãã§ã¯ã
> > const ã䜿çšãããã®ã¯ã
> > ãªãŒããªã³ãªãŒã®è¡šïŒããŒãã«ïŒã«å€ãã
> > ãå°ãå€ãã®æéãã§æžãŸãªãå Žåãå€ã
ãããŸãã
>
> ããããå Žåã¯ãstaticããšæžãã°ããããšããã ãã®ããšã ãšæããŸããã
> éãã®ã§ãã?
åç
ã察åŠãã¯ããã§è¯ãã§ãã
static ãæžãå¿ããããstaticãæžãã°è¯ãã
ã«ã³ããæžãå¿ããããã«ã³ããæžãã°è¯ãã
倿°ã®åæåãå¿ããããåæåããã°è¯ãã
ïŒïŒãšãïŒãééããããïŒïŒãšæžãã°è¯ãã
ããã°ã©ã ãããããçŽãã°è¯ãã
ïŒãã®åçåããããªãããã
ãäºé²ããã©ããããã§ãã
static ãæžãå¿ããªãããã«ã¯ã©ãããããããïŒ
static ãç¥ããªã人ã«ã¯ã©ãæãããïŒ
詊ãã«ã%grep static *.h ãšãããããã¡ã€ã«ãã static ãæ€çŽ¢ããŠèŠãŠ
ãã ããã
äœãæ€åºãããªããã°ã
äœãæ€åºããããèŠæ€èšã
static func(void) ; ã®ãããã¿ã€ã宣èšãšãã
stattic struct tag hoge = { ã®å€æ°ã®åæããŒãã«ãšãã
> ç°éšããã®åžæããã³ã³ãã€ã©ãã€ãã£ãŠãã人ãã¡ã«äŒãããšããããã©ã®
> ããã«äŒããã®ã§ããããã
> **********************************************************************
> ããŒã¿ãã¹ã¿ãã¯é åã«å²ãåœãŠããããšãã¹ã¿ãã¯é åãå°ãå€ãã«äœ¿ãã
> ã¹ã¿ãã¯é åã«æžã蟌ãããã«æéãå°ãå€ãã«ãããã®ããšãŠãæ°ã«ãªãã®
> ã§éçé åã«å²ãåœãŠããã®ã ãããã¡ãã¡ãstaticããšæžãã®ã¯é¢åãªã®ã§ã
> æžããªããŠãéçé åã«å²ãåœãŠãããã«æ¹è¯ããŠã»ããã
> **********************************************************************
>
> ãšããããã«ãªããšæããŸããéããŸãã?
åçïŒ
ãconst修食ãããŠããããã³ã³ãã€ã©ã¯ãã£ãšæé©åããŠæ¬²ãããã£ãŠ
åæžããŠãŸããã©ã
>
> At Fri, 22 Mar 2002 00:12:34 +0900,<a7ctjf$h2u$1...@bgsv5906.tk.mesh.ad.jp>
> tabe wrote:
> >
> > æžãæããŠã¯é§ç®ã®constãªããžã§ã¯ããã
> > ãããããæžãæãå¯èœãªã¹ã¿ãã¯é åã«ã³ããŒããªããã°ãªããªã
> > å¿
ç¶æ§ãç§ã«ã¯è§£ããªãã
>
> å¿
ç¶æ§ãç§ã«ã¯ããããªãããéçé åã«å²ãåœãŠãããã«ããŠã»ããããšã
> ãã®ã§ã¯ãã¡ã§ãããå¿
ç¶æ§ãããããšãªããããšãããŒã¿ãã¹ã¿ãã¯é åã«
> å²ãåœãŠãã®ãééããšããããã§ã¯ãªãã®ã§ãããã
åçïŒ
ã¯ãã
ééãã§ãããŸããã
ãç¡é§ã§ã¯ç¡ããïŒãã£ãŠèšã£ãŠãŸãã
äŸïŒ
æé©ååïŒ
int myfunc(int id)
{
const char fname[1024] = __FILE__ ;
char ã output[1024] ;
switch(id) {
case 1: strcpy(output,"壱") ;break ;
case 2: strcpy(output,"åŒ");break ;
case 3:ããstrcpy(output,"å");break ;
}
printf("%s:%s\n",fname,output) ;
}
æé©ååŸïŒã³ã³ãã€ã©ã¯ããè§£éããŠæ¬²ããïŒïŒ
int myfunc(int id)
{
register const char* const fname = __FILE__ ;
register char *output ;
switch(id) {
case 1: output="壱"; break ;
case 2: output="åŒ"; break ;
case 3:ããoutput="å"; break ;
}
printf("%s:%s\n",fname,output) ;
}
èŠã¯ã
ãæååãªãã©ã«ãçŽæ¥èŠãã³ãŒããçæããŠãã
ã£ãŠäºã§ãã
> -- --
> > æé©åã§ãã¹ã¿ãã¯ãšãªã¢ã®tmp[]ãæ¶æ»
ãããŠæ¬²ããã
> > ãšèšãããšã§ãã
>
> ããã§ã¹ã¿ãã¯äžã«tmpããããªãããã«æé©åããããã«ã¯
> ã³ã³ãã€ã©ã printf ã®åäœãç¥ã£ãŠããå¿
èŠããããšæããŸããã©ãã
ããããå¿ èŠãããŸããã
> ãã®ã³ãŒãã§ããã°ãconst ã€ããªããŠã
> æé©åãããŠãã¹ã¿ãã¯æ¶è²»éã¯ãŒãã«ãªããŸãã
> Cã§ãã
> ãªããC++ã«éå®ããã®ãããããŸãããã©ã
ïŒïŒŠïŒ¡ïŒ± ïŒïŒïŒïŒ
> 宿°ãã¬ãžã¹ã¿ã¯éåžžã¯ã¢ãã¬ã¹ãæããªãã®ã§ã
> å
ã®
> const char tmp [] = __FILE__;
> ãã¹ã¿ãã¯äžã«å®äœãããããã®ã
> åãçç±ã ãšæã£ãŠããã®ã§ããã©ãã
ã¡ããšéããšæããŸãã
æååãªãã©ã«ã¯ã¢ãã¬ã¹ãæã¡ãŸãã
ã³ã³ãã€ã©ã®å®è£
ã«ããããŸããã
èªå倿°ã®ã
const char tmp [] = __FILE__;
ãå®çŸããã«ã¯ã
ã³ã³ãã€ã©ã®çæã³ãŒãã®ã€ã¡ãŒãžãšããŠã
strcpy(ã¹ã¿ãã¯ãšãªã¢æååãéçãšãªã¢æåå) ;
ã§ãå®çŸããŠããç©ãå€ãã§ãã
> > char *strcpy __P((char *, const char *));
> > ãšãã£ãŠããã£ãã誰ãã©ãããå Žåã«ããããããã§ããã?
>
> 確ãã«âŠ
æãŸã ãbcopy ãš memcpy, ã©ã£ã¡ãã©ã£ã¡ã ã£ãã£ã?ããšããã£ãŠãé ã¯
ããããã¡ã€ã«ã«éåãäžè©±ã«ãªã£ããã§ããâŠ.
ç°éš> ããããå¿
èŠãããŸããã
äŸïŒïŒã³ã³ãã€ã©ã¯ããè§£éããŠæ¬²ããïŒïŒ
void myfunc()
/* const 倿°ã®ãå³èŸºãæååãªãã©ã«ã®å Žåã */
/* ããããã¹ããã§äœ¿ã */
/* ãããã¯ãããã£ãããregister const char * ã«å
¥ããŠäœ¿ãã*/
printf("%s\n",__FILE__) ;
printf("%s\n",__FILE__) ;
...
printf("%s\n",__FILE__) ;
}
以äžã®æ§ãªæé©åãããã«ã¯ã
ã³ã³ãã€ã©ã,strcpy ããªãã§ããã
ç¥ã£ãŠããå¿
èŠããããŸãã
ïŒïœïœïœçã¯ãç¥ã£ãŠããŸãã
äŸïŒ
æé©ååïŒ
int myfunc(int id)
{
const char fname[1024] = __FILE__ ;
char ã output[1024] ;
switch(id) {
case 1: strcpy(output,"壱") ;break ;
case 2: strcpy(output,"åŒ");break ;
case 3:ããstrcpy(output,"å");break ;
}
printf("%s:%s\n",fname,output) ;
}
æé©ååŸïŒã³ã³ãã€ã©ã¯ããè§£éããŠæ¬²ããïŒïŒ
int myfunc(int id)
{
register const char* const fname = __FILE__ ;
register char *output ;
switch(id) {
case 1: output="壱"; break ;
case 2: output="åŒ"; break ;
case 3:ããoutput="å"; break ;
}
printf("%s:%s\n",fname,output) ;
}
âââââââââââââââââââââ
ãäºé²ãã¯ããªããŠããããšæããŸãã
ãstaticããæžããŠãªãããé
ããæžãã°ãã£ãšã¯ãããªããšæã£ããæžãã°
ããããããæããªããã°æžããªããŠãããŸããªãã§ãããã
æžãå¿ãããããšãã£ãŠåäœããããããªãããã§ã¯ãªãã®ã§ãããã
> > ç°éšããã®åžæããã³ã³ãã€ã©ãã€ãã£ãŠãã人ãã¡ã«äŒãããšããããã©ã®
> > ããã«äŒããã®ã§ããããã
> > **********************************************************************
> > ããŒã¿ãã¹ã¿ãã¯é åã«å²ãåœãŠããããšãã¹ã¿ãã¯é åãå°ãå€ãã«äœ¿ãã
> > ã¹ã¿ãã¯é åã«æžã蟌ãããã«æéãå°ãå€ãã«ãããã®ããšãŠãæ°ã«ãªãã®
> > ã§éçé åã«å²ãåœãŠããã®ã ãããã¡ãã¡ãstaticããšæžãã®ã¯é¢åãªã®ã§ã
> > æžããªããŠãéçé åã«å²ãåœãŠãããã«æ¹è¯ããŠã»ããã
> > **********************************************************************
> >
> > ãšããããã«ãªããšæããŸããéããŸãã?
> åçïŒ
> ãconst修食ãããŠããããã³ã³ãã€ã©ã¯ãã£ãšæé©åããŠæ¬²ãããã£ãŠ
> åæžããŠãŸããã©ã
ããã§ã¯ããæé©åãããŠã»ããçç±ãåãããŸããã
ãæé©åãããŠã»ããçç±ã¯ãç§ãèšã£ããããªããšã§ããã?
> ééãã§ãããŸããã
> ãç¡é§ã§ã¯ç¡ããïŒãã£ãŠèšã£ãŠãŸãã
ç¡é§ã ãšããŠãããã®ç¡é§ãæ°ã«ãªããªããã°ãæé©åãããŠã»ãããšã¯æã
ãªãã§ãããã
ç°éšããã¯ãæé©åãã«ãã£ãŠçããªãããããªæéããšãŠãæ°ã«ãªããã
ãæé©åãããŠã»ãããšæãã®ã§ãã?
--
N-Yas <cep0...@nyc.odn.ne.jp>
> 以äžã®æ§ãªæé©åãããã«ã¯ã
> ã³ã³ãã€ã©ã,strcpy ããªãã§ããã
> ç¥ã£ãŠããå¿
èŠããããŸãã
> ïŒïœïœïœçã¯ãç¥ã£ãŠããŸãã
gccã¯build-in颿°ãšããŠstrcpy()ãæã£ãŠããã ãã§ãã
> äŸïŒ
> æé©ååïŒ
> int myfunc(int id)
> {
> const char fname[1024] = __FILE__ ;
> char ã output[1024] ;
> switch(id) {
> case 1: strcpy(output,"壱") ;break ;
> case 2: strcpy(output,"åŒ");break ;
> case 3:ããstrcpy(output,"å");break ;
> }
> printf("%s:%s\n",fname,output) ;
> }
> æé©ååŸïŒã³ã³ãã€ã©ã¯ããè§£éããŠæ¬²ããïŒïŒ
> int myfunc(int id)
> {
> register const char* const fname = __FILE__ ;
> register char *output ;
> switch(id) {
> case 1: output="壱"; break ;
> case 2: output="åŒ"; break ;
> case 3:ããoutput="å"; break ;
> }
> printf("%s:%s\n",fname,output) ;
> }
ä»®ã«__FILE__ ãã¯ãã®æååãªãã©ã«ã®é·ãã10ã ã£ãšããŠ
æé©ååã®äŸã§ã¯ fname[12]ãšãfname[100]ã®å€ã¯\0ã§ããã
æé©ååŸã®äŸã¯ãã§ã¯fname[12]ã«ã¢ã¯ã»ã¹ããããæäœã
æªå®çŸ©ã«ãªããŸãã
printf()ããã®ãããªæäœãããªããšã³ã³ãã€ã©ãç¥ããªããš
ãã®æé©åãè¡ãããšã¯åºæ¥ãŸããã
å®çŸããã«ã¯ãåºãç¯å²ã§æå³è§£éãè¡ãå¿
èŠãããã
ããã°ã©ããæ£ããç¥èãæã£ãŠããã°äžèŠãªæé©åãªã©ã
害ã°ããã§çãªããã³ã³ãã€ã©ã®ãã°ã®å
ã«ãªãã ããªã®ã§
ãããå人çã«ã¯ãããŠæ¬²ããã§ãã
constã€ããã°ROMåé åã«å
¥ããšããfile scopeã®ããšãmoduleå
ãšåŒã¶ãšã
ITRONç°å¢ããŒã«ã«ãªç¥èã«ãããããŸã£ãŠãããã°ã©ãã«ãããããããªã
æé©åã§ãããã
ã§ããã®äŒç» äœã
æšè圊
ssa...@dekaino.net
# ã³ãŒãã¯è¥å¹²çç¥ããŸãã
-----------------------------------------------------------------------
static const char* _filename;
static unsigned long _linenumber;
void _debugf(char* fmt, ...)
{
printf("%s:%d ", __filename, __linnumber);
vprintf(...);
}
#define debugf _filename = __FILE__ , _linenumber = __LINE__ , _debugf
-----------------------------------------------------------------------
int myfunc(void)
{
debugf("myfunc");
}
-----------------------------------------------------------------------
ãVisual C++ ã«ãã TRACE ãšäŒŒããããªããã§ããããããªãééããåºæ¥
ãã ãç¡ãããããšãããµã
tabeããã®<a77lkg$flc$1...@bgsv5905.tk.mesh.ad.jp>ãã
>ç°éšã§ã
>int myfunc(void)
>{
> conts char funcname[128] = "myfunc" ;
> printf("%s:%d\t%s" __FILE__,__LINE__,funcname) ;
>}
>ãã®BUGã®éçãããã
> printf("%s:%d\t%s",__LINE__ , __FILE__,funcname) ;
>}
(snip)
--
toys mailto:<toys...@hotmail.com>
int funcConst(const char* str)
{
const char* _str;
_str = str;
}
ãããããã®ãš
int funcStatic(const char* str)
{
static const char* _str;
_str = str;
}
ãããã ãšããã£ã±ãæå³åããéããããstatic ãš const ã¯åºå¥ããŠãã
ãããªãã§ããïŒ
ãC++ ã® class ã§ãåæ§ã«
class foo
{
const char* m_const_str;
// ã¯ã©ã¹ã®ã¡ã³ããŒå
ã«ã€ã³ã¹ã¿ã³ã·ãšãŒããããã
static const char* m_static_str;
};
static const char* foo::m_static_str;
// ã°ããŒãã«ã«ã€ã³ã¹ã¿ã³ã·ãšãŒãããªããšã ãã
ããšãååšããŠããå Žæãéãã
ãconstã¯åããããŠstaticã¯çœ®ãå ŽæïŒã¹ã³ãŒãç¯å²ïŒãªèš³ã§ããããèªå
çã«åããconstã ããã£ãŠã¹ã³ãŒãç¯å²ã¯staticã£ãŠããã®ã¯ééããå¢ã
ãåå ã«ãªããšæããããã©ã«ãã¯ãautoãªãã ãããšãããããã¿ããªãã
ã©ã«ãã¯ãautoã«ããªããšãŸããããã§ããã
>èè
ã®çæ§ã«è³ªåïŒïŒ;
> const char funcname[128] = "myfunc" ;
> ã
> static const char funcname[] = "myfunc"
> ãšãstaticãä»ããããŠã[]ã®ïŒïŒïŒãæžãããªãæ¹æ³
> æããŠãã ããã
# è¿çã«ã¯ãªããŸããã
ã?? = "myfunc";
ã?? ã«ã¯äœãæž¡ãããã®ããããããããŸãããããã®"myfunc"ã£ãŠå®éã«
ã¯ããã°ã©ã ãç«ã¡äžãã£ãæç¹ã§ã¹ã¿ãã¯å
(å¶å®ãªé åã«?)ã«çšæãããŠ
ãïŒïŒæ¶æž¬ã§ããïŒ
ã"myfunc" ã®è¿ãè¡ã¯ãstatic char* ã ããæå®ããªããŠãè¯ãããããªã
ããªïŒãªããŠæã£ããããã
--
toys mailto:<toys...@hotmail.com>
> > > ããããå Žåã¯ãstaticããšæžãã°ããããšããã ãã®ããšã ãšæããŸããã
> > > éãã®ã§ãã?
> > åç
> > ã察åŠãã¯ããã§è¯ãã§ãã
> > ãäºé²ããã©ããããã§ãã
>
> ãäºé²ãã¯ããªããŠããããšæããŸãã
ããŒããèšããã£ã¡ãã£ãã
ããåºããããçŽãã°è¯ããã
ãšããèãã§ããã
ç§ã®èãã¯ã
ãã¯åºãªãããã«ããã°è¯ããã§ãã
> ãstaticããæžããŠãªãããé
ããæžãã°ãã£ãšã¯ãããªããš
> æã£ããæžãã°ãããã
> ããæããªããã°æžããªããŠãããŸããªãã§ãããã
> æžãå¿ãããããšãã£ãŠåäœããããããªãããã§ã¯ãªãã®ã§ãããã
ãããããããªããŸããã
ïŒïŒŠïŒ¡ïŒ±ãïŒïŒïŒïŒhttp://www.catnet.ne.jp/kouno/c_faq/c16.html#0
ã§ç€ºãããŠããæ§ã«ã¯ã©ãã·ã¥ããããšããããŸãã
ïœïœã«ãªãããããé »ç¹ã«ãããŠãã£ãŠäºã§ãã
> > > ç°éšããã®åžæããã³ã³ãã€ã©ãã€ãã£ãŠãã人ãã¡ã«äŒãããšããããã©ã®
> > > ããã«äŒããã®ã§ããããã
> > > **********************************************************************
> > > ããŒã¿ãã¹ã¿ãã¯é åã«å²ãåœãŠããããšãã¹ã¿ãã¯é åãå°ãå€ãã«äœ¿ãã
ãã¹ã¿ãã¯é åãå°ããã§ãããŸãªã
æ°åBTEãäžæ°ã«æ¶è²»ããŠã
ã¹ã¿ãã¯ãªãŒããŒãããŒã®å±æ©ã«çŽé¢ããäŸã
ãã§ã«æç€ºããŠããŸãã
> > > ã¹ã¿ãã¯é åã«æžã蟌ãããã«æéãå°ãå€ãã«ãããã®ããšãŠãæ°ã«ãªãã®
ãæéãå°ãããã©ããã¯ã
"N-Yas" 殿ã®ããžãã¹ç倿ã«å§ããŸãã
ïŒååŠçæéãé
ããªã£ãŠããäŸã
ãã§ã«æç€ºããŠããŸãã
> > > ã§éçé åã«å²ãåœãŠããã®ã ãã
> > > ãã¡ãã¡ãstaticããšæžãã®ã¯é¢åãªã®ã§ã
> > > æžããªããŠãéçé åã«å²ãåœãŠãããã«æ¹è¯ããŠã»ããã
> > > **********************************************************************
ããã¯ãç§ã«ã誀解ãããå€ªç°æ°ã«ææãããŠããã®ã§ã
ïŒç§ã®äžçªã®èªèäžè¶³ã¯ã
ïŒ const 倿°ã®ãïŒãã®å³èŸºã«å€æ°ãèšè¿°ã§ããäºãèªèããŠããªãã£ãã®ã§ã
ïŒãconst ãæ¥ããäžåŸãstatic ã«åºæ¥ããã®ç§ã®åæã®äž»åŒµã¯èª€ãã§ãã
ïŒèª€ãã¯ãã§ã«ãèªããŠããŸãã
以äžçŸåšã®äž»åŒµã
åºæ¥ãã ããããããããæžããŸããã
void func()
{
const char buf[] = "abc" ;
}
ã®æ§ãªãèªå倿°é
åãæååãªãã©ã«ã§åæåããã«ã¯
ã³ã³ãã€ã©ã®å®è£
æ¹æ³ã«ãäŸåããŸããã
äž»ã«ïŒã€ã®æ¹æ³ãèããããŸãã
ïŒïŒïŒ äžåºŠéçãšãªã¢ã«æååãªãã©ã«ããšã£ãŠãããŠã
颿°ã«çªå
¥ããæã«ã
èªå倿°ãšãªã¢ã«ã³ããŒããæ¹æ³ã
ã€ã¡ãŒãžçã«ã¯
strcpy(èªå倿°ãšãªã¢ã®bufãéçãšãªã¢æååãªãã©ã«)ãïŒ
ïŒïŒïŒ 颿°ã«çªå
¥ããæã«ã
buf[0] ='a' ;
buf[1] ='b' ;
buf[2] ='c' ;
buf[3] ='\0' ;
ãå®è¡ããæ¹æ³ã
ã§ãä»èããŠããã®ã¯ã
ïŒïŒïŒã®æ¹æ³ã§å®è£
ãããŠããå Žåã
ã©ããããã§ã« ãéçãšãªã¢ã«æååãªãã©ã«ãããããã ãã
ãããçŽæ¥ã¿ãã°ãããããªããã
ã£ãŠèãã§ãã
> > > ãšããããã«ãªããšæããŸããéããŸãã?
> > åçïŒ
> > ãconst修食ãããŠããããã³ã³ãã€ã©ã¯ãã£ãšæé©åããŠæ¬²ãããã£ãŠ
> > åæžããŠãŸããã©ã
>
> ããã§ã¯ããæé©åãããŠã»ããçç±ãåãããŸããã
> ãæé©åãããŠã»ããçç±ã¯ãç§ãèšã£ããããªããšã§ããã?
以äžããæé©åãããŠã»ããçç±ã¯ã
ïŒïŒïŒ åŠçéåºŠãæ©ããããã
ïŒïŒïŒ ç¡é§ãªã¡ã¢ãªã¯äœ¿ããããªãã
>
> > ééãã§ãããŸããã
> > ãç¡é§ã§ã¯ç¡ããïŒãã£ãŠèšã£ãŠãŸãã
>
> ç¡é§ã ãšããŠãããã®ç¡é§ãæ°ã«ãªããªããã°
ãç¡é§ãæ°ã«ãªããªããéçºçŸå Žãªãã§ããïŒ
> ãæé©åãããŠã»ãããšã¯æããªãã§ãããã
> ç°éšããã¯ãæé©åãã«ãã£ãŠçããªãããããªæéã
ç§ã®çµéšåã§ãããã°ã
æé©åãããšãåŠçé床ã¯çŽïŒïŒïœïŒïŒïŒ
ããŸãã
ïŒïŒïœïŒïŒïŒ
ãã
ããããªæéãã©ããã¯ãããžãã¹çå±é¢ã«äŸåããŸãã
ïŒç§ãïŒç§ã«ãªã£ã ïŒïŒæå³ç¡ãïŒãªã¢ã«ã¿ã€ã ç³»ã¯å¥ïŒïŒ
ïŒæéãïŒæéã«ãªã£ã ïŒïŒããïŒïŒ
> ãšãŠãæ°ã«ãªããããæé©åãããŠã»ãããšæãã®ã§ãã?
ãæ°ã«ãªããã§ãªããŠã
ç§ã®éçºç°å¢ã§ã¯ããé
ãã®ã¯èš±ãããªããã§ãã
ââââââââââââââââââââââ
ã埡æãããããªãããããã§ããã°ã¯åºããã®ãªã®ã§ãã
# ãã°ãããªãäžå ·åã£ãŠã®ããããã
--
red brick
> void func()
> {
> const char buf[] = "abc" ;
> }
buf[] ã®åæå㯠func åŒã³åºããšäžå¯Ÿäžé¢ä¿ã«ãªããšãããªã, ãšèŠæ Œã«ã
ããŸã (ç§ã以åçå±±ããã«ææãããŸãã).
6.2.4 Storage durations of objects
...
[#4] An object whose identifier is declared with no linkage
and without the storage-class specifier static has automatic
storage duration.
...
6.8 Statements and blocks
...
[#3] A block allows a set of declarations and statements to
be grouped into one syntactic unit. The initializers of
objects that have automatic storage duration, and the
variable length array declarators of ordinary identifiers
with block scope, are evaluated and the values are stored in
the objects (including storing an indeterminate value in
objects without an initializer) each time the declaration is
reached in the order of execution, as if it were a
statement, and within each declaration in the order that
declarators appear.
宿°ã«ãã¡ãããšæ¬¡ã®é¢æ°ã®åºåãåžžã«äžå®ã«ãªã£ã¡ããããã§ããã.
void
foo (int n)
{
const char buf[] = "abc";
if (--n < 0)
return;
printf ("%p\n", buf);
foo (n);
> >ã»(1)ãš(2)ã«ã¯äŸåé¢ä¿ãç¡ã
>
> ã£ãŠã®ããconst宣èšããå°åºããŠã¯ãããŸãã... ã£ãŠã®ã alias
> ã®åé¡ã§ããããC ã¯ããããªã®ã°ã£ãã§ãã
以åã話é¡ã«åºããŸããã, restrict ã£ãŠã®ãå°å ¥ãããŠããŸã.
6.7.3.1 Formal definition of restrict
...
[#7] EXAMPLE 1 The file scope declarations
int * restrict a;
int * restrict b;
extern int c[];
assert that if an object is accessed using one of a, b, or
c, and that object is modified anywhere in the program, then
it is never accessed using either of the other two.
[#8] EXAMPLE 2 The function parameter declarations in the
following example
void f(int n, int * restrict p, int * restrict q)
{
while (n-- > 0)
*p++ = *q++;
}
assert that, during each execution of the function, if an
object is accessed through one of the pointer parameters,
then it is not also accessed through the other.
ã§, ä»æã® strcpy ã®ãããã¿ã€ã宣èšã¯ããã§ã.
char *strcpy(char * restrict s1,
const char * restrict s2);
????const ???????????????????????????
???????????????
int foo(char* hoge);
???????????? hoge ????????????????????
?????????????????????????????
bar(const char* gege)
{
char buf[256];
strcpy(buf, gege);
foo(buf);
....
}
??????????????
int foo(const char* hoge);
???????????????????????????????????
?????
??????????????????âŠâŠ?
--
???
naga...@csf.ne.jp
ã©ãããŠããæãã®ã§ããããã
staticã§ããã¹ããã®ã«staticãä»ãå¿ããå Žåã®è©±ã§ããã...?
> ç§ã®èãã¯ã
> ãã¯åºãªãããã«ããã°è¯ããã§ãã
ãããããã§ããã©ãN-Yasããã¯ããã®ä»¶ã«é¢ããŠããããåªå
ããã䟡å€ã¯ãªããšãã£ãŠãã®ã ãšæãã®ã§ããã(ç§ãããæã
ãŸã)(ããéã£ãŠãããã¿ãŸãã)
# BTEãªããŠããã®ããäºé²ããŠã»ãã(ç¬)
ç°éšããã¯ãããèªãã§ãã人ã«äœãæ±ããŠããã®ã§ããããã
--
ããã¯ãª
åæåããŒã¿ãå€ããšæã£ãããstaticããšæžãã°ãããšããã ãã®è©±ã§ããã
ãã® C-FAQ 16.3ã«ãã倧ããªé
åã䜿ããšãã¯staticãšå®£èšããã»ããããã
ãšæžãããŠããããã§ããã
> ãã¹ã¿ãã¯é åãå°ããã§ãããŸãªã
> æ°åBTEãäžæ°ã«æ¶è²»ããŠã
> ã¹ã¿ãã¯ãªãŒããŒãããŒã®å±æ©ã«çŽé¢ããäŸã
> ãã§ã«æç€ºããŠããŸãã
ç°éšããã®èšããæé©åãã¯ã¹ã¿ãã¯ãªãŒããŒãããŒãé²ãã®ã«ã圹ç«ã€ããš
ããããšã§ãã?
At Sun, 24 Mar 2002 01:27:09 +0900,<a7ianb$10n$1...@bgsv5905.tk.mesh.ad.jp>
tabe wrote:
>
> void func()
> {
> const struct tag unuse[] = {/* æäœ¿ã£ãŠããã©ä»ã¯æªäœ¿çš
> ã*/
> 0xFF,0FF, .....................................
> é³å£°ããŒã¿ãããªããã®åæå€ã
> å»¶ã
ãšç¶ã
> }
> }
ãã®å Žåãªãããæé©åãã§ã¹ã¿ãã¯ãªãŒããŒãããŒãé²ããã§ããããã©ã
unuse[]ããconstããªãã§å®çŸ©ãããŠãããããæé©åãã®å¯Ÿè±¡ã«ãªããªãã®
ã§ã¹ã¿ãã¯ãªãŒããŒãããŒã¯é²ããŸããã
> ïŒïŒïŒã®æ¹æ³ã§å®è£
ãããŠããå Žåã
> ã©ããããã§ã« ãéçãšãªã¢ã«æååãªãã©ã«ãããããã ãã
> ãããçŽæ¥ã¿ãã°ãããããªããã
> ã£ãŠèãã§ãã
ã ããããã¯ã
static const char buf[] = "abc" ;
ã®ããã«ãstaticããã€ããã°ããã ãã§ããã?
ã©ãããŠãã®çšåºŠã®ããšãé¿ããããšããã®ã§ãã?
> ç§ã®çµéšåã§ãããã°ã
> æé©åãããšãåŠçé床ã¯çŽïŒïŒïœïŒïŒïŒ
ããŸãã
At Sat, 23 Mar 2002 10:43:35 +0900,<a7gn0d$nto$2...@bgsv5906.tk.mesh.ad.jp>
tabe wrote:
>
> void myfunc()
> {
> const char tmp[] = __FILE__ ;
> printf("%s\n",tmp) ;
> printf("%s\n",tmp) ;
> ...
> printf("%s\n",tmp) ;
> }
ãã®é¢æ°ã«ç°éšããã®èšããæé©åãããããšåŠçé床ã30ïœ40%ã¢ãããã
ã®ã§ãã?
--
N-Yas <cep0...@nyc.odn.ne.jp>
<a7mqpq$f87$1...@news2.rim.or.jp>ã®èšäºã«ãããŠ
doh...@hf.rim.or.jpããã¯æžããŸããã
> In article <a7mmq6$f5r$1...@bgsv5905.tk.mesh.ad.jp>
> "tabe" <ta...@mug.biglobe.ne.jp> writes:
>
> > void func()
> > {
> > const char buf[] = "abc" ;
> > }
>
> buf[] ã®åæå㯠func åŒã³åºããšäžå¯Ÿäžé¢ä¿ã«ãªããšãããªã, ãšèŠæ Œã«ã
> ããŸã (ç§ã以åçå±±ããã«ææãããŸãã).
:
> 宿°ã«ãã¡ãããšæ¬¡ã®é¢æ°ã®åºåãåžžã«äžå®ã«ãªã£ã¡ããããã§ããã.
>
> void
> foo (int n)
> {
> const char buf[] = "abc";
> if (--n < 0)
> return;
> printf ("%p\n", buf);
> foo (n);
> }
80 - 90 % ANSI C ã® CINT ã ãšããåºåãäžå®ã«ãªããã§ããã
void tarfu(char bar[],int count) {
bar[4] = count+bar[4];
}
void foo(int i) {
const char bar[] = "hoge0"; // â¡
tarfu((char *)bar, i); // â
if ( i > 0 ) {
foo(--i);
}
printf("%p\n", bar);
}
ã ãšå€ãã§ãããŸããâ ãäœèããŠãããªãïœãªãšããã¯ãããŸããã
ã¡ãªã¿ã«ãããã§â¡ã static ä»ãã«è§£éãã¡ãããšãFreeBSD 4.4R ã®
gcc 2.8.1 ã ãšæ»ã«ãŸãã.rodata ã«ãªãã©ã« "hoge0" ã眮ãããŠãã
ãã«çŽã« tarfu(...) ã§æžã蟌ã¿ã«è¡ã£ã¡ããã®ã§ã
# ãã¡ãã gcc ã¯ãããªè§£éããªãã®ã§ãæ»ãªãªãã
ã§ãéåžžã§ããåºå®ããŒã¿ãããŒã«ã«ã«æã¡èŸŒããªã const 以åã«
static ããã¯ããªã®ã§ãconst ãä»ããŠãããã©ãããåé¡ã«ãã以å
ã®è©±ã®ãããªã
äžã®å€æ
ã³ãŒããèŠæ Œäžã¯ãšã©ãŒã«ãªããã®ã§ãconst ã ãã ã£ãã
static ã«åæã«ãªã£ã¡ããã®ã¯ããã£ã±ãäœèšãªãäžè©±ãªæ°ãããã§ãã
ããããstatic ã«ãªããã®ã¯ããããïœãïŒããšãããªãããã以åã«
ãâ ã®ãã£ã¹ãã¯çµ¶å¯ŸãŸãããªãïœãïŒããšèšã£ãŠãããªããšå€ãªæ°ã
ããã§ãã
ãã£ã¹ããããããããã³ã³ãã€ã©ã«ãšã£ãŠå®å¿ã㊠static ã«ãã¡ãŸ
ããªãã£ãŠãç¶æ³ããããã§ãããããã ããã端ã£ãã責任æãŠãªã
ããšã¯æãæããªãã®ãããããã£ãŠããšã§ããã
# static ãååšããªããªãäºæ ã¯å¥ã§ãããã©ã
--
æç° éè ïŒ ãšãŒã»ã¢ã€ã»ãœããæ ªåŒäŒç€Ÿãœãªã¥ãŒã·ã¥ã³éçºéš
E-mail tak...@aisoft.co.jp
ãååéã§æ±ºæããçãçç±ãæ·»ãããã
In article <a7mrhk$fhi$1...@news2.rim.or.jp>,
doh...@hf.rim.or.jp (Kazuo Fox Dohzono) writes
>ã§, ä»æã® strcpy ã®ãããã¿ã€ã宣èšã¯ããã§ã.
> char *strcpy(char * restrict s1,
> const char * restrict s2);
ãªãã»ã©ã確ãã«ãLinuix 2.0ã§ã¯ãããªã£ãŠãããªãç¥ããŸããã§ããã
段ã
ã±ã£ãšèŠã§ãæå³ãããããªããªã£ãŠããŸãããããããè§£æ±ºæ¹æ³
ãæ£ããã®ããªããC èªäœãæ£ããè§£æ±ºæ¹æ³ã§ã¯ãªãããããããªã£ãŠ
ããŸããã§ããããã
---
Shinji KONO @ Information Engineering, University of the Ryukyus,
PRESTO, Japan Science and Technology Corporation
æ²³éçæ²» @ çç倧åŠå·¥åŠéšæ
å ±å·¥åŠç§,
ç§åŠæè¡æ¯èäºæ¥å£ããããç ç©¶21(æ©èœãšæ§æ)
èŠæ Œã«ã¯éãããŸããã
ïŒïŒïŒ const ãšæ¥ããstatic ã«ããŠããŸãã
ïŒïŒïŒ æé©åã§ãconst ãªããèªå倿°åæå€ã®ãªãã©ã«å€ãå
±æããŠããŸãã
åãäžããŸãã
å匷ã«ãªããŸããã
"Narita Takaoki" <tak...@aisoft.co.jp> wrote in message
news:a7n6uk$35l$1...@nwall2.odn.ne.jp...
æ¬åœã¯è²ã
ãšçãçšæããŠããããã§ããã話ãããŸã建èšçã§ã¯
ãªããªããããªã®ã§ããã¡ãã«çžä¹ã(^^;
Shinji KONO wrote:
> >ã§, ä»æã® strcpy ã®ãããã¿ã€ã宣èšã¯ããã§ã.
> > char *strcpy(char * restrict s1,
> > const char * restrict s2);
ïŒäžç¥ïŒ
> ããããè§£æ±ºæ¹æ³ãæ£ããã®ããªãã
æ£ãããæ£ãããªãããšèšããããšãããåŽé¢ã§ã¯æ£ãããã
å¥ã®åŽé¢ããèŠããšæ£ãããªãã£ãŠã®ãæ¬åœã®ãšããã§ãããã
å®éãæžãæ¹ã®çŸãããèŠããããšèšãç¹ã§ã¯ãä»ã«ãããæãèšèªã¯
ãããã§ãããã§ãããããä»åŸãåºãŠããã§ãããã
ïŒã䞊åãªããžã§ã¯ãæåèšèªãã¯æ²³éå
çã®ç ç©¶ããŒãã§ãããããš
ãã§ããâŠâŠâŠâŠïŒ
ã§ã¯ããªãæªã ã«ïŒ£ãçãé·ãããã®ã§ããïŒ
ãããã
> C èªäœãæ£ããè§£æ±ºæ¹æ³ã§ã¯ãªãããããããªã£ãŠããŸããã§ããããã
ã«å¯Ÿããæ¬è³ªçãªçãã ãšç§ã¯æããŸãã
ãä»ã®èšèªã«æ¯ã¹ãŠåªäœãªç¹ãšããŠã¯ããšããããã以äžã®ç¹ã
æãã€ããŸããïŒä»ã«ãããããããªããã©èš±ããŠ(((((^^;ïŒ
ïŒïŒïŒã³ãŒãå¹çã®é«ãïŒãœãŒã¹ã«æžãããããšä»¥å€ã¯äžåããªãïŒ
ããããïŒå倿ã¯å¥åé¡ã(^^;ïŒãœãŒã¹ã«æžãããããšä»¥å€ïŒ
ïŒïŒïŒèšèªãšããŠã®åçŽãïŒããã¯ãã³ã³ãã€ã©ã®ç§»æ€æ§ã«åœ±é¿ïŒ
ïŒïŒïŒä»ãã©ãããã©ãŒã ãžã®ç§»æ€ã®å®¹æãïŒããã¯ãgccã®ååšã倧ããïŒ
ïŒïŒïŒé«çŽèšèªäžŠã®èšè¿°ã®ãæã
ãããã®äºããåæ¹é¢ã§ïŒ£ãå©çšãããçç±ã ãšæããŸãã
ïŒç§å人ã«ãšã£ãŠã¯ïŒïŒïŒãäžçªéèŠ(^^ãïŒ
ç ç©¶ã¬ãã«ã®åé¡ãšããŠã¯ãã©ããšããããšã¯ãªãã§ããããã
忥ã¬ãã«ã«ãããŠã¯ããããã¯éåžžã«éèŠãªæå³ãæã¡ãŸãã
ç¹ã«åæ¥ã¬ãã«ã®å Žåã¯ãå¿
ããããå®å
šã§ãããããšãŸã§ã¯
èŠæ±ãããŸããã
確ãã«çæ³ã§ã¯ãããŸããã人éãäœã以äžããã³ãã«ççŸããã£ãŠã
ãããããªãã§ããããã䜿ãåŽããã®ççŸã«å¯Ÿãå¶çŽãäžããŠãã
ããã«åãã¡ãªãããããã®ã§ããã°ãå²ãåã£ãŠäœ¿ããŸãã
ïŒãã®è¯ãäŸããSpec-CãšãSystemCã§ãããã
ãç¥ããªãå Žåã¯ãæ€çŽ¢ãšã³ãžã³ã䜿çšãããªãããŠã¿ãŠãã ããã
ããè¿ãã«ããã¯ãã®åç°ææã«èããŠã¿ãŠãå€ããããããŸããã
ãããªãã§ãããªãã®ããããªçšéã«äœ¿ããã ïœïŒïŒããšæãã¯ãã§ãâŠâŠ
ãã£ãŠèšããããç§ãæªã ã«ããããŸã§å¶çŽãããæå³ç¡ãããããš
ãæãã€ã€ãã䜿ããªããšãããªããã ãããªããšæã£ãŠãŸããïŒ
ã ããããã¯ãæ¢åã®ã³ãŒãã®å»¶åœãå³ãã€ã€ãããã€ãã¯ãããš
ããããããšãå®å
šã§ã¯ãªããšå€ãã€ã€ãã䞊ååãžã®éã
暡玢ããŠããã®ã ãšç§ã¯æããŸãã
ïŒã ããç§ã¯æåã«ããšèšãããšã§ãå°æ¥ã«æåŸ
ã£ïŒïŒconstã®æŽ»çšããš
ãæžããŸãããïŒ
ã§ã¯ã§ã¯ïœïœïœïœïœ(^^/
<a7na8a$fcn$1...@bgsv5906.tk.mesh.ad.jp>ã®èšäºã«ãããŠ
ta...@mug.biglobe.ne.jpããã¯æžããŸããã
> ããããŸããã
>
> èŠæ Œã«ã¯éãããŸããã
> ïŒïŒïŒ const ãšæ¥ããstatic ã«ããŠããŸãã
> ïŒïŒïŒ æé©åã§ãconst ãªããèªå倿°åæå€ã®ãªãã©ã«å€ãå
±æããŠããŸãã
> åãäžããŸãã
ãïœãå¥ã«èŠæ Œã«éãã£ã¡ãé§ç®ã£ãŠããã§ããªããŠãé§ç®ãªèŠæ Œã ã£
ããé§ç®ãšèšãã¹ãã§ããã ããã©ãé§ç®ã§ã©ããããšè¯ããªãã£ãŠã®
ã¯ãæç€ºããã¹ãã§ããããã
ããšãä»åã®ä»¶ãçŽåŸããã«ããŠãèŠæ Œã ãããããªããŠãã©ãããŠã
ããªã£ãŠããããŸã§æãäžããäžã§çŽåŸããªããšãæ³ã®ç²Ÿç¥ãã»ãããŠ
ããæ³è§£éã¿ããã«ãªãã®ã§ããããŸãæè¿ã§ããªãããšããšã
ã§ãä»åã®ã¿ãã¯ãã£ã±ã
1.æ¢ã«äŸç€ºãããããªãã¡ãã¡ãªãã£ã¹ããåºæ¥ã
2.ããŒã«ã«å€æ°ã«å¯Ÿãã const ãš static ã®é¢ä¿ã¯ 1 ããã
ãããæšå®äžå¯
ãªã®ã§ã¯ãªãããšãããããã¡ãã¡ãã£ã¹ããç¡ããã°ã£ãŠèª¬ãåºãã
ãã ãã©ãããããã C èšèªã®è¯ããšãããåããããã ããå人çã«
㯠C èšèªããããããªããªã£ããã€ãŸããªãã(^^;;;
# ãã¡ãã¡ãªäŸã¯ã
# const char foo[] = "snafu";
# char *p = (char *)foo;
# ã§ãè¯ãã§ããã宣èšã§äžææžåœå®å
šã«ãããã£ãã£ãŠãã£ã¹ããã
# ãããããããã¯åå±ã¯åžããªãã£ã€ã
ãããã©ã³ã¹ä»£è¡šã«æ»ããã
# ãæ¥æ¬ä»£è¡šã®ã©ã€ã³ãã£ãã§ã³ã¹ããããããã£ã€ã
ã(ãã®å¿ã¯ããª
# ããŒã§ãè£ããããã^^;;;;)ã
ã§ãC++ ã«èšåããŠãããšãC ã®ãã¡ãã¡ãã£ã¹ãã¯ãŸã æå¿«ã«æãã
ç¯çã ããã©ããã®ãã¡ãã¡ãã£ã¹ããšãã€ã³ã¿ãŒãš C++ ã®ãã¡ãã¡ã¯
ã©ã¹ã®ä»çµã¿(ç¶æ¿äºã
å«ããŠ)ãšãçµã¿åããããšãã¡ãã¡ã®8ä¹ããã
ãªæãã«ãªã£ãŠããã©ã¹ãã¹ããã°ããç¡æµç¶æ
ã§ããã¿ããã«ãªãã®
ã§ããããã«å人çã«ãååŒä¿¡æ¿ã®åå
寺ã(^^;;;;;;;
èŠæ Œã¯ãšããããšããŠããªããã®ãããªã³ãŒãã䜿ãã
ãã®ããç§ã«ã¯ããçè§£ã§ããŸããã§ããã
èãããããšããã
(a) æåå宿°ã«âååâãä»ããŠå³å€ã§ã®ã¢ã¯ã»ã¹ã
çŠæ¢ããã
(b) åãæåå宿°ãè€æ°ç®æã«åºãŠããã®ã§ãããã
å æããé åãå
±æããã
ãããããª?
(a)ã«é¢ããŠã¯ãenumã§æåå宿°åã宣èšã§ããªã以
äžããåå空éã ãæ¶è²»ããŠé åã¯å æããªãããããª
æ¹æ³ã¯ãªãããã§ããããããããèªèããã¹ã¿ãŒãã
ããšããŠããããäžã®ãããªã³ãŒãã§ããã代çšãããã
ãšæã£ããšããŠãããããããŸããããªããšããã£ãã
äœãå¥ã®æ¹æ³ã暡玢ããã®ããµã€ãã§ããããèªåã®ç®
è«ã¿ãéããªãã®ãconstã®ä»æ§ã®ããã«ããäºèŠãã
ãããªã...ã
(b)ã«é¢ããŠã¯ãåãæåå宿°ãè€æ°åºçŸããã(ãŸã£
ããåãã§ãªããŠã"abc"ãš"bc"ã®ããã«æ«å°ŸåŽãéšå
äžèŽãããªã)ãããŸã©ãã®ã³ã³ãã€ã©ãŒãªãããããŸ
ãšããŠã²ãšã€ã®é åã«æ ŒçŽããŠãããŸããããã ã£ãã
ãããäžã®ãããªã³ãŒããæžãçç±ã«ã¯ãªããªã...ã
ãããã«ããŠãããé
ãã®ã¯èš±ãããªããã®ãªããããŒ
ã¿ã®å²ãä»ããç¥ããªãããã°ã©ãããªã©ã䜿ãããã«
ã¯ãããªããšæãã®ã§ãããéãã®ããªãã©ããç§ã«ã¯
ç°éšããã®ãã©ã³ã¹æèŠãã¡ãã£ãšãããŠããããã«èŠ
ããã®ã§ããã
--
倪ç°çŽ(Junn Ohta) (æ ª)ãªã³ãŒ/æ°æšªæµäºæ¥æ
oh...@sdg.mdd.ricoh.co.jp
> ãããã«ããŠãããé
ãã®ã¯èš±ãããªããã®ãªããããŒ
> ã¿ã®å²ãä»ããç¥ããªãããã°ã©ãããªã©ã䜿ãããã«
> ã¯ãããªããšæãã®ã§ãããéãã®ããªã
ãé
ãã®ã¯èš±ãããªããå Žåã§ãã
ãã㌠ã¿ã®å²ãä»ããç¥ããªãããã°ã©ãããã
ãæéãå°ãå€ãããšããã£ãŠãããã°ã©ãã
䜿ã£ãŠä»äºãããã®ãçŸå®ã§ãã
> ã©ããç§ã«ã¯
> ç°éšããã®ãã©ã³ã¹æèŠãã¡ãã£ãšãããŠããããã«èŠ
> ããã®ã§ããã
ã ããã
%grep static *.h
ã£ãŠãæã£ãŠãããã°åã®èšã£ãŠãæå³è§£ããŸãã£ãŠã
ïŒå€ªç°ããã®æžãããœãŒã¹ã³ãŒã以å€ãããªããšé§ç®ã§ããã
âââââââââââââââââââ
ããšãè£è¶³ã§ããã©ã
ïŒå®å
šäž»çŸ©è
ã®ãããããã¡ãã£ãŠãæãããããªãçºèšãããŠãã®ã§ã
lintã®èŠåãå
šéšã€ã¶ãããšãã
gcc -Wall -W -Oã®èŠåãå
šéšã€ã¶ãããšã
åã¯èšã£ãŠãŸãããã
ã»ã©ã»ã©ãã€ã¶ãã£ãŠãèšã£ãŠãŸããã©ã
ïŒãŸãã誀解ãæãããªã
ã ãããæãŠïŒïŒïŒïŒïŒïŒïŒïŒ
> ç°éšã§ã
> "Tomoaki NISHIYAMA" <tom...@nibb.ac.jp> wrote in message
> news:86y9gf30...@koke.nibb.ac.jp...
> > > ç°éšã§ãã
> > > ã ããã
> > > %grep static *.h
> > > ã£ãŠãæã£ãŠãããã°åã®èšã£ãŠãæå³è§£ããŸãã£ãŠã
> > grep static *.h
> > ã§ã»ãšãã©äœãã§ãªãã®ã¯åœããåãããªãã§ãã?
> > ãµã€ãstaticã£ãŠããããã¡ã€ã«ã«æžããªããšæããŸããã©ãã
> > 颿°ã®å®äœãå®çŸ©ããŠãããã¡ã€ã«ã«æžãã ãã§ããã¯ãã§ãããã
>
> ã ãããæãŠïŒïŒïŒïŒïŒïŒïŒïŒ
äžäœãã©ãã§æãŠã°åããã®ãã説æããŠé ããŸãããšããããŸããã
static inline func()ãããã£ããã颿°ã®å®äœå®çŸ©ãå«ãŸããŠãã
header fileã§åž°ãå€ã«ãããžã®ãã€ã³ã¿ãŒãè¿ããŠããäŸä»¥å€ã¯
ä»ã®ãšããçºèŠã§ããŠããŸããã
> äžäœãã©ãã§æãŠã°åããã®ãã説æããŠé ããŸãããšããããŸããã
> static inline func()ãããã£ããã颿°ã®å®äœå®çŸ©ãå«ãŸããŠãã
> header fileã§åž°ãå€ã«ãããžã®ãã€ã³ã¿ãŒãè¿ããŠããäŸä»¥å€ã¯
> ä»ã®ãšããçºèŠã§ããŠããŸããã
/usr/includeãšãã®äžã§
grepããŠããã®è©±ã®é¢çœãã¯è§£ããªããã ã
èªåãã¡ã§äœã£ãããã°ã©ã ã®
ããããã¡ã€ã«ãã
static ãæ€çŽ¢ããŠäžããã
äœãèŠã€ãããªããã°ã
tomoakiãããšã
ææãåªç§ã£ãŠäºã§ãã
ïŒã¹ã³ãŒãã«ãŒã«ãã¡ãããšè§£ã£ãŠããã£ãŠäºã§ãã
ããšã
static char sccsid[] = "ãªããšã" ;
static char cvsid[] = "ãããšã" ;
ã£ãŠã®ããã£ãŠããç¡èŠããŠïŒ¯ïŒ«ã
ãšããããšãªããconstãstatic constã«ãããããã§
ã¯ã¡ã£ãšãå®å¿ã§ããªããŠãå®å¿ã§ãããããã®ãã§ã
ã¯ãè¡ãã®ãªãéã«constãstatic constã«ããŠããŸã
çšåºŠã®éããªããŠãŸã£ããäžèŠã«ãªããããªãã®ã§ãã
ã€ãŸãã(ã»ãã®ãã¡ãªããããªãç¶æ³ã§èšèªèŠçŽäžã
åé¡ãªããšããŠ)constãåŠçç³»ãstatic constã«èªã¿æ¿
ããŠãããŠããšãããŠãŠãããããšã¯æããªãããšãã
人ãã»ãšãã©ã®ãããªæ°ããããã§ããã
> ãé
ãã®ã¯èš±ãããªããå Žåã§ãã
> ãã㌠ã¿ã®å²ãä»ããç¥ããªãããã°ã©ãããã
> ãæéãå°ãå€ãããšããã£ãŠãããã°ã©ãã
> 䜿ã£ãŠä»äºãããã®ãçŸå®ã§ãã
ãçŸå®ããåãå
¥ãããªãããã®ãçŸå®ããèš±ãç¯å²ã§
ãããé
ãã®ã¯èš±ãããªãããªã©ãšã¯èšã£ãŠãããªãã§
ããã?
ãçŸå®ããå³ããã®ã§ããã°ãé
ãã®ã¯èš±ãããªãããš
ããã®ãçµµã«æããé€
ã§ãããªããç§ããã¿ãã°const
ãstatic constã«èªã¿æ¿ããŠãããåŠçç³»ãçŸå®ã®é€
ã
äœãåºããŠã¯ãããªãããã§ãã
> ã ããã
> %grep static *.h
> ã£ãŠãæã£ãŠãããã°åã®èšã£ãŠãæå³è§£ããŸãã£ãŠã
> ïŒå€ªç°ããã®æžãããœãŒã¹ã³ãŒã以å€ãããªããšé§ç®ã§ããã
ãããšãäœãããªãŒãœããã®ãœãŒã¹ã§å
·äœäŸãšããŠé©å
ãªãã®ãæããŠã¿ãŠããã ããŸãã?
"tabe" <ta...@mug.biglobe.ne.jp> wrote in message
news:a7q4li$619$1...@bgsv5905.tk.mesh.ad.jp...
> ç°éšã§ãã
> "Tomoaki NISHIYAMA" <tom...@nibb.ac.jp> wrote in message
> news:86vgbj2y...@koke.nibb.ac.jp...
> > "tabe" <ta...@mug.biglobe.ne.jp> writes:
> > > ã ãããæãŠïŒïŒïŒïŒïŒïŒïŒïŒ
> ãã
> ãããããããã
> tom...@nibb.ac.jpãããã¯ãac.jpã ãã
> åŠçããã ãã
>
> > äžäœãã©ãã§æãŠã°åããã®ãã説æããŠé ããŸãããšããããŸããã
> > static inline func()ãããã£ããã颿°ã®å®äœå®çŸ©ãå«ãŸããŠãã
> > header fileã§åž°ãå€ã«ãããžã®ãã€ã³ã¿ãŒãè¿ããŠããäŸä»¥å€ã¯
> > ä»ã®ãšããçºèŠã§ããŠããŸããã
>
> /usr/includeãšãã®äžã§
> grepããŠããã®è©±ã®é¢çœãã¯è§£ããªããã ã
>
> èªåãã¡ã§äœã£ãããã°ã©ã ã®
> ããããã¡ã€ã«ãã
> static ãæ€çŽ¢ããŠäžããã
> äœãèŠã€ãããªããã°ã
> tomoakiãããšã
> ææãåªç§ã£ãŠäºã§ãã
> ïŒã¹ã³ãŒãã«ãŒã«ãã¡ãããšè§£ã£ãŠããã£ãŠäºã§ãã
Cèšèªã« static ãšããããŒã¯ãŒããããããšã
ç¥ããªãã ããšãã説ããããšæããŸããã©ãã
> ããšã
> static char sccsid[] = "ãªããšã" ;
> static char cvsid[] = "ãããšã" ;
> ã£ãŠã®ããã£ãŠããç¡èŠããŠïŒ¯ïŒ«ã
ãïŒ
ç¡èŠããŠãããã§ããïŒ
å人çã«ã¯ç¡èŠã§ããªãã§ããã©ã
ãšããããããç¡èŠããŠãããªãã
ç°éšãããäœãæå³ ã㊠grep ãããšãã£ãŠããã®ã
ããããªãã§ãã
ãããšããããããããã°ã©ã ãçºèŠãããã
ãããæžããããã°ã©ãããç¡èŠããŠïŒ¯ïŒ«ãïŒ
ãšããã§ãããŒã¯ãŒãçã«ã¯ static ã§åãã§ããã©ã
屿倿°ã« static ãã€ãã話ãšã¯
ãŸã£ããç°ãªã話é¡ãšæã£ãŠãããã§ãããïŒ
以äžã§ãã
倧åŠã®ãäžççãªæš©åšãæã£ããåãå çããç¥ããŸãããã
--
é¢ïŒ ç¥å¥å·
Masao Seki <ma-...@gb3.so-net.ne.jp>
ç§ãªãããæåãã®è³ªåãèŠããšãã«æã£ãã®ã¯
ããïŒïŒïŒ__FILE__䜿ã£ãŠãããã°ããã®ã¯ãããŠã¿ãã
ããïŒïŒïŒãã€ã³ã¿äœ¿ãã°ïŒãã ã£ããããŸããã
ç°éšããã®çãããžã®RESãèŠãŠã
ããããè²ã
ãšèŠåŽããŠãã®ãïœããšæããŸããã
ãã®æãã«é¢ããèšè¿°ã§ãã®ã§ã
äºå®ãšã¯ç°ãªããšããããããããããŸããã®ã§ã
ãã®ç©èªã¯ãã£ã¯ã·ã§ã³ãšèšãããšã§ïŒããã
Junn Ohta wrote:
> fj.comp.lang.cã®èšäº<a7mmq6$f5r$1...@bgsv5905.tk.mesh.ad.jp>ã§
> ta...@mug.biglobe.ne.jpããã¯æžããŸããã
> > const char buf[] = "abc" ;
> èŠæ Œã¯ãšããããšããŠããªããã®ãããªã³ãŒãã䜿ãã
> ãã®ããç§ã«ã¯ããçè§£ã§ããŸããã§ããã
ãç°éšããèªèº«ã¯äœ¿ãããšãæããªããã䜿ãã€ãããç¡ãã®ã§ããã
<a7aeh4$9op$1...@bgsv5906.tk.mesh.ad.jp>ã§ã®çºèšã®ãã£ãããã«ã
> ïŒïŒïŒäººä»¥äžã®ã
> è€æ°åæã®æ ç¹ã§ã
> æ°åKLINEã®ããã°ã©ã ã
> ååéçºããŠã
> å¿
æ»ã«åã£ããã·ã³ã¿ã€ã ã§
> ãã®ãã°ãçºèŠãã
> åæ§åé¡ãã
> è³æ¥ãAMïŒïŒïŒïŒãŸã§èª¿æ»ãã
> ã£ãŠæã§ããèããŸãããïŒ
ãèŠæš¡ããã³æãã£ãŠãã人å¡ã®é¢ä¿äžãæ©çãŸããæªããªãã®ã¯
ååèããããããšã§ãïŒãã ããå®éã®èŠæš¡ãã©ããã¯æªç¢ºèªïŒã
ãããã«å€ªç°ããã®èšãããã«ã
> ãé
ãã®ã¯èš±ãããªããã®ãªããããŒã¿ã®å²ãä»ããç¥ããªãããã°ã©ãã
> ãªã©ã䜿ãããã«ã¯ãããªããšæãã®ã§ãããéãã®ããªã
ããã¯ç¡è¶èŠè¶æ£è«ã§ããç§ããåŸã®ã»ãã®åçã§ã¯ãããæžããŸãã(^^ã
ãæ¬¡åã®çºæ³šæãšãããïœã£ãšåã人ã«çºæ³šãç¶ããå Žåã¯ã
ãã®å¶åŸ¡ãå¯èœã§ãããããæåãšãäžå®æã®çºæ³šã§ã¯ãã®å¶åŸ¡ãã§ããŸããã
ãïŒçºæ³šæ¡ä»¶ã«ã誰ã
ã¯äœ¿ããªããšãã誰ã
åžæããšæžãããšãã§ãããïŒ
ãïŒç§ã ã£ãŠãé¢é£äŒç€Ÿã£ãŠå¶çŽãããªããã°ãçºæ³šããããªã人ã£ãŠ
ããæ²¢å±±ããŸãããïŒ
ã ããããã
åœåã®è³ªåã¯
ãã®ãã䜿ããªãã«è©²åœããäººãæžããã³ãŒããç¡çç¢çã«ã§ãå®çšåã«
æã¡èŸŒãæ¹æ³ãšããŠ
ïŒïŒïŒãç°¡åã«ãã§ãã¯ããæ¹æ³ã£ãŠç¡ãã
ãããïŒprintfã«é¢ããŠã¯ãgcc -Wformatãªãã·ã§ã³ã£ãŠã®ãçãã
ããããã¹ããªã³ã°ãªãã©ã«ã®é£çµã«é¢ããŠã¯æªè§£æ±ºïŒ
ïŒïŒïŒãç¡çç¢çã§ãæé©åããæ¹æ³ã£ãŠãªãã
ãããïŒã³ã¬ã¯ä»æ§ãªã®ã§ã©ãã«ããªããªãïŒ
ïŒïŒïŒãstaticã§æžãcharåã®é
åã®èŠçŽ æ°çç¥ããæ¹æ³ãªãã
ãããïŒããã¯ã³ã³ãã€ã©ã®å¶çŽã«ããå¯/äžå¯ããããããªã®ã§ã
ããããæç¢ºãªçãã¯ç¡ããã¡ãªã¿ã«ãgccã§ã¯ãå
ã®ãŸãŸã³ã³ãã€ã«ãéãã
(^^;
ããããé
åã®èŠçŽ æ°æžããªãã ãã ã£ããããã€ã³ã¿äœ¿ã£ãŠãåé¡ã¯ç¡ãã¯
ãã
ããããstatic const宣èšããããããreadonlyã®ç©ºéã§ãå
šãççŸã¯ãªãã)
ãšç§ã¯è§£éããŸããã
以äžã解説ã¢ãŒãçµäºã
ã£ãŠããã£ã±ã倧ããªãäžè©±ãïŒ(ç)
ãªãããnewsgroupã¯ã¡ãŒã«ã®é
ä¿¡ãé
ãâŠâŠâŠâŠ
"Masamichi Motoyoshi" <sa...@dsl.gr.jp> wrote in message
news:a7qdjb$7v0$1...@sv.dsl.gr.jp...
> æ¬åã§ãã
> Cèšèªã« static ãšããããŒã¯ãŒããããããšã
> ç¥ããªãã ããšãã説ããããšæããŸããã©ãã
ããã確ãã«ã
> > ããšã
> > static char sccsid[] = "ãªããšã" ;
> > static char cvsid[] = "ãããšã" ;
> > ã£ãŠã®ããã£ãŠããç¡èŠããŠïŒ¯ïŒ«ã
> ãïŒ
> ç¡èŠããŠãããã§ããïŒ
> å人çã«ã¯ç¡èŠã§ããªãã§ããã©ã
ãã®ã
ãšãã
ãšãã¯ïŒµïŒ®ïŒ©ïŒžã®ãœãŒã¹ç®¡çã·ã¹ãã ã§ã
ãçŽæã§ãç¡èŠããŠè¯ãäºã«ãªã£ãŠãŸãã
#ident "ãœãŒã¹ã³ãŒã第äœçâ
ã䜿ããã°ãè¯ãã®ã ããã©ANSI-Cæšæºã§ã¯ç¡ããã®ã§ãããã
> ãšããããããç¡èŠããŠãããªãã
> ç°éšãããäœãæå³ ã㊠grep ãããšãã£ãŠããã®ã
> ããããªãã§ãã
äžèšä»¥å€ã§ã¯ã
åã®æå³ãš
æ¬åããã®çè§£ã¯å€åãã£ãŠãŸãã
> ãããšããããããããã°ã©ã ãçºèŠãããã
> ãããæžããããã°ã©ãããç¡èŠããŠïŒ¯ïŒ«ãïŒ
ãããŸã§æšãäºèšããªããã
ããããã¡ã€ã«ã§
static int i = 0 ;
ãšãã
ãžã£ããã¡ã€ã«ã§
static char Roop ; /* char? R?L? */
ãšããã ã£ããèšããããããªãã
> ãšããã§ãããŒã¯ãŒãçã«ã¯ static ã§åãã§ããã©ã
> 屿倿°ã« static ãã€ãã話ãšã¯
> ãŸã£ããç°ãªã話é¡ãšæã£ãŠãããã§ãããïŒ
ã©ã®çšåºŠãstatic ãçè§£ãããŠããããã®ã
è©äŸ¡æ¹æ³ã®äžã€ã§ãã
> > buf[] ã®åæå㯠func åŒã³åºããšäžå¯Ÿäžé¢ä¿ã«ãªããšãããªã, ãšèŠæ Œã«ã
> > ããŸã (ç§ã以åçå±±ããã«ææãããŸãã).
åæåã ãã§ãªããŠãªããžã§ã¯ãã®ã€ã³ã¹ã¿ã³ã¹çæãããã§ãã.
6.2.4 Storage durations of objects
...
[#5] For such an object that does not have a variable length
array type, its lifetime extends from entry into the block
with which it is associated until execution of that block
ends in any way. (Entering an enclosed block or calling a
function suspends, but does not end, execution of the
current block.) If the block is entered recursively, a new
instance of the object is created each time. The initial
value of the object is indeterminate. If an initialization
is specified for the object, it is performed each time the
declaration is reached in the execution of the block;
otherwise, the value becomes indeterminate each time the
declaration is reached.
> äžã®å€æ ã³ãŒããèŠæ Œäžã¯ãšã©ãŒã«ãªãã
ããšãã£ãŠåäœä¿èšŒãããããã§ã¯ãããŸããã.
6.7.3 Type qualifiers
...
[#5] If an attempt is made to modify an object defined with
a const-qualified type through use of an lvalue with non-
const-qualified type, the behavior is undefined. If an
attempt is made to refer to an object defined with a
volatile-qualified type through use of an lvalue with non-
volatile-qualified type, the behavior is undefined.113)
> ã®ã§ãconst ã ãã ã£ããstatic ã«åæã«ãªã£ã¡ããã®ã¯ããã£ã±ãäœèš
> ãªãäžè©±ãªæ°ãããã§ãã
ãšããã§ãããªèšè¿°ããããã§ããâŠ.
[#3] The properties associated with qualified types are
meaningful only for expressions that are lvalues.112)
____________________
112The implementation may place a const object that is not
volatile in a read-only region of storage. Moreover, the
implementation need not allocate storage for such an
object if its address is never used.
> > > buf[] ã®åæå㯠func åŒã³åºããšäžå¯Ÿäžé¢ä¿ã«ãªããšãããªã, ãšèŠæ Œã«ã
> > > ããŸã (ç§ã以åçå±±ããã«ææãããŸãã).
ãã®èŸºããå 茩ã«èããŠã¿ããšãã, ãããã¯
extern char first_char (void);
extern char second_char (void);
extern char third_char (void);
void
foo (void)
{
const char buf[] = {
first_char (),
second_char (),
third_char (),
'\0',
};
...
}
ã®ãããªå Žåã«ã€ãã·ã£ã©ã€ã¶ã®å颿°ãæ¯ååŒã°ããããšãä¿èšŒããããã®
ãã®ã§, ã€ãã·ã£ã©ã€ã¶ãæååãªãã©ã«ã®ãããªåœ¢ã§äžããã, ãã€, buf
ã®ã¢ãã¬ã¹ãå€ã«æµå€±ããªãå Žå, buf ã read-only ãªé åãžçœ®ãããšã¯å¥
ã«æ§ããªãããããªããããšããæèŠã§ãã.
| ãã ïŒãããªäžæ¯ãªæé©åãã³ã³ãã€ã©ããã£ãŠãããŠãïŒèª°ããããããª
| ãããºãããããçšéãªã const char* ããã㯠static const char[] ã§
| ååãªãã ããã
ãšããã®ã¯å€ªç°ããã®æèŠã«åèŽããŸãã.
ç§ãšããŠã¯ãã
ãã¶ãå®çŸå¯èœãªæèŠã ã£ãã€ãããªã®
ã§ãã...ã
> ãæ¬¡åã®çºæ³šæãšãããïœã£ãšåã人ã«çºæ³šãç¶ããå Žåã¯ã
> ãã®å¶åŸ¡ãå¯èœã§ãããããæåãšãäžå®æã®çºæ³šã§ã¯ãã®å¶åŸ¡ãã§ããŸããã
> ãïŒçºæ³šæ¡ä»¶ã«ã誰ã
ã¯äœ¿ããªããšãã誰ã
åžæããšæžãããšãã§ãããïŒ
> ãïŒç§ã ã£ãŠãé¢é£äŒç€Ÿã£ãŠå¶çŽãããªããã°ãçºæ³šããããªã人ã£ãŠ
> ããæ²¢å±±ããŸãããïŒ
ãããªãã§ãã!?
ç°éšãããæããããconstã®åé¡ã£ãŠãèšèšæã«ããŒ
ã¿ã¬ã€ã¢ãŠãã«ã€ããŠåºæ¬ã«ãŒã«ãäœã£ãŠãå¿
èŠã®ãªã
ãããã¹ã¿ãã¯ã«ããŒã¿ã眮ããªããšæ±ºããŠããã°ãã
話ã§ããã? ã§ããããçè§£ã§ããªãçšåºŠã®ããã°ã©ã
ãŒã£ãŠãããªã«ããã®ããã...ã
ããŸç§ã®ãŸããã«ã100人ãããã®éçºè
ãããŠãåå
äŒç€Ÿã¡ã³ããŒ(ãããã倿³šãã)ãããã€ãã®ãšããã
ãæ¥ãŠããã£ãŠããã®ã§ããããçºæ³šããããªãããšã
ãã¬ãã«ã®äººã¯ã²ãšããããªãã§ããã
> ã ããããã
> åœåã®è³ªåã¯
> ãã®ãã䜿ããªãã«è©²åœããäººãæžããã³ãŒããç¡çç¢çã«ã§ãå®çšåã«
> æã¡èŸŒãæ¹æ³ãšããŠ
# ç°éšãããšãã®Review-Cãè²·ã£ãŠäœ¿ãã:-)
> ïŒïŒïŒãç°¡åã«ãã§ãã¯ããæ¹æ³ã£ãŠç¡ãã
> ãããïŒprintfã«é¢ããŠã¯ãgcc -Wformatãªãã·ã§ã³ã£ãŠã®ãçãã
> ããããã¹ããªã³ã°ãªãã©ã«ã®é£çµã«é¢ããŠã¯æªè§£æ±ºïŒ
æ§æã¬ãã«ã®åé¡ãªããããã¹ãåŠçããã°ã©ã ãçµã¿
åãããã°ãã»ã©èŠåŽããã«ãã§ãã¯ã§ããå Žåãå€ã
ãšæããŸããã?
ããšãã°æååãªãã©ã«ã®é£çµããããã©ããããã§ã
ã¯ãããã®ãªãããã¹ãŠã®ãœãŒã¹ã«å¯ŸããŠ
(1) ããªããã»ããµãŒãéã(cc -E)
(2) æ®ã£ãããªããã»ããµãŒæç€ºè¡ãæšãŠ(grep -v)
(3) ãã¹ãŠã®ç©ºçœ(ã¹ããŒã¹ãã¿ããæ¹è¡)ãæšãŠ(tr -d)
(4) æ®ãã®ããã¹ãäžã«""ããããã©ãã調ã¹ã
ã§ã ãããã®ç®çã¯æãããããªæ°ãããŸãã
(3)ã®çµæã¯æ¹è¡ã®ãªã1è¡ã®é·ãŒãããã¹ãã«ãªãã®ã§ã
(4)ã®åŠçã«äœã䜿ããã§ã¡ãã£ãšæ©ããããããŸãã
ããCã§æžããã£ãŠã¡ããã¡ããã£ãšæžãã¡ããçšåºŠã®
ãã®ã§ãããã
ã§ãäžã®ããã«åŠçãããšç©ºæåå("")ãšã
"Can't open \"%s\""
ã®ãããªæååãŸã§åŒã£ããã£ãŠããããšã«ãªããŸããã
ãã®çšåºŠã®false matchãªãããããŠéªéã«ãªããªãã§
ãããããããã¯(1)ã®åã«ããœãŒã¹äžã«ãã³ãã«ååš
ãã""(ããã«ã¯ãããããã°ã¯ãªãã¯ã)ãäœãå¥ã®æ
ååã«çœ®ãæããŠãã£ãŠãããã§ãããã
ã§ãããããè€æ°ç®æã®æ ç¹ã«ããããæ°åKLINEã®ã
ãã°ã©ã ã(ããã°ã©ã æ¬æ°ã«ããŠ1000æ¬ããã?)ã«ã€
ããŠãã§ãã¯ãããšããŠããæºåãåãããŠ1æéãã
ãããªãã®ã§ã¯ãªãããšæããŸãã
ãšããããã§ãç§ã«ã¯ã©ããç°éšããã®å±æ©æãããŸã
ãã€ã¬ã¯ãã«ã¯äŒãã£ãŠããªããã§ããã...ã
"Tadamasa Tamura" <ta...@coral.ocn.ne.jp> wrote in message
news:3CA0CCB1...@coral.ocn.ne.jp...
> ç°æã§ãã
> ãšãããããä»åã¯è§£èª¬ã¢ãŒãã§ã
äžç¥
> ç°éšããã®çãããžã®RESãèŠãŠã
> ããããè²ã
ãšèŠåŽããŠãã®ãïœããšæããŸããã
æ¶æ¶ã
ç°æããã¯ãã€ãã
ç§ã®ãçšæãªæ¥æ¬èªãæ£ç¢ºã«çè§£ããŠãã ããã
å°ãäžèšã¯
> ïŒïŒïŒäººä»¥äžã®ã
> è€æ°åæã®æ ç¹ã§ã
> æ°åKLINEã®ããã°ã©ã ã
> ååéçºããŠã
> å¿
æ»ã«åã£ããã·ã³ã¿ã€ã ã§
> ãã®ãã°ãçºèŠãã
> åæ§åé¡ãã
> è³æ¥ãAMïŒïŒïŒïŒãŸã§èª¿æ»ãã
äºå®ã«åºã¥ããã€ã¯ã·ã§ã³ãã£ãŠæã§ãã
> ãªãããnewsgroupã¯ã¡ãŒã«ã®é ä¿¡ãé ãâŠâŠâŠâŠ
åæã
å
šç¶é¢ä¿ç¡ãããã©ã
http://groups.google.com/groups?q=fj.comp.lang.c&hl=ja
ã®ãåãåã¯ãªãã§ã ããã
âââââââââââââââââââââââ
"Junn Ohta" <oh...@src.ricoh.co.jp> wrote in message
news:a7uhtj$jvq$1...@ns.src.ricoh.co.jp...
> fj.comp.lang.cã®èšäº<3CA0CCB1...@coral.ocn.ne.jp>ã§
> ta...@coral.ocn.ne.jpããã¯æžããŸããã
> > ãããã«å€ªç°ããã®èšãããã«ã
> > > ãé
ãã®ã¯èš±ãããªããã®ãªããããŒã¿ã®å²ãä»ããç¥ããªãããã°ã©ãã
> > > ãªã©ã䜿ãããã«ã¯ãããªããšæãã®ã§ãããéãã®ããªã
> > ããã¯ç¡è¶èŠè¶æ£è«ã§ããç§ããåŸã®ã»ãã®åçã§ã¯ãããæžããŸãã(^^ã
>
> ç§ãšããŠã¯ãã
ãã¶ãå®çŸå¯èœãªæèŠã ã£ãã€ãããªã®
> ã§ãã...ã
倪ç°ããã
grep static *.h
ããŠãããŸããïŒ
æµéã«èãããããªãŒãœããã§ãªããŠããããã
>
> ç°éšãããæããããconstã®åé¡ã£ãŠãèšèšæã«ããŒ
> ã¿ã¬ã€ã¢ãŠãã«ã€ããŠåºæ¬ã«ãŒã«ãäœã£ãŠãå¿
èŠã®ãªã
> ãããã¹ã¿ãã¯ã«ããŒã¿ã眮ããªããšæ±ºããŠããã°ãã
> 話ã§ããã? ã§ããããçè§£ã§ããªãçšåºŠã®ããã°ã©ã
> ãŒã£ãŠãããªã«ããã®ããã...ã
ã ããã
grep static *.h
ãªãããåºãããåºãªãã£ãã
è峿ޥã
ã
> ããŸç§ã®ãŸããã«ã100人ãããã®éçºè
ãããŠãåå
> äŒç€Ÿã¡ã³ããŒ(ãããã倿³šãã)ãããã€ãã®ãšããã
> ãæ¥ãŠããã£ãŠããã®ã§ããããçºæ³šããããªãããšã
> ãã¬ãã«ã®äººã¯ã²ãšããããªãã§ããã
grep static *.hã§ã
ãªããåºããæã®å¯Ÿå¿ã¯ã
ãäžççãªæš©åšãæã£ããåãå
çãã®
tom...@nibb.ac.jpããããšã
æ¬åãããžã®ã
ã¬ã¹ã§åçæžã¿ã
>
> > ã ããããã
> > åœåã®è³ªåã¯
> > ãã®ãã䜿ããªãã«è©²åœããäººãæžããã³ãŒããç¡çç¢çã«ã§ãå®çšåã«
> > æã¡èŸŒãæ¹æ³ãšããŠ
>
> # ç°éšãããšãã®Review-Cãè²·ã£ãŠäœ¿ãã:-)
fjã§ã¯ãå¶æ¥çŠæ¢ãªã®ã§ã
ãçæ§ã®è³ã¯ããã®è³ãã£ãŠèšãããã£ã
ã£ãŠæžããŠãããã
ã ã£ãŠãåããããããããªãã ããã
>
> > ïŒïŒïŒãç°¡åã«ãã§ãã¯ããæ¹æ³ã£ãŠç¡ãã
> > ãããïŒprintfã«é¢ããŠã¯ãgcc -Wformatãªãã·ã§ã³ã£ãŠã®ãçãã
> > ããããã¹ããªã³ã°ãªãã©ã«ã®é£çµã«é¢ããŠã¯æªè§£æ±ºïŒ
>
> æ§æã¬ãã«ã®åé¡ãªããããã¹ãåŠçããã°ã©ã ãçµã¿
> åãããã°ãã»ã©èŠåŽããã«ãã§ãã¯ã§ããå Žåãå€ã
> ãšæããŸããã?
ããã¯ã"Takashi SAKAMOTO" ãžçºæ³šæžã¿ã§ãã
http://groups.google.com/groups?hl=ja&th=f27fc10aae2b44d6
æ©ããèŠãªããšæ¶ãã¡ããã
> ãšããããã§ãç§ã«ã¯ã©ããç°éšããã®å±æ©æãããŸã
> ãã€ã¬ã¯ãã«ã¯äŒãã£ãŠããªããã§ããã...ã
倪ç°ãã
http://rec.ncos.co.jp
ã§ãçŽïŒïŒåãããé芧ãã ãã£ãã®ã«ããŸã é§ç®ïŒ
ãã®ã¹ã¬ããæ·±ããªããããã®ã§ã
æ°ããã¹ã¬ãããç«ãŠãŸããã
äºåïŒ
ã»æ¥æ¬äººãã¯ïœããstatic ãç¥ããªã
ã»æ¥æ¬äººã®ïŒ¢ïŒ¹ïŒŽïŒ¥ãžã®ç°åžžãªææ
> --
> 倪ç°çŽ(Junn Ohta) (æ ª)ãªã³ãŒ/æ°æšªæµäºæ¥æ
> oh...@sdg.mdd.ricoh.co.jp
âââââââââââââââââââââââââââ
ãã£ãŠã¿ãŸããããã¡ã§éçºããŠããŠç§ãããã¢ã¯ã»ã¹
ã§ããç¯å²ã®ãœãŒã¹ã³ãŒã(è¡æ°æ°ããŠãªããã©10äžè¡
çšåºŠããª)ã«ã¯ãããã£ãŠã ããããããªstaticã¯èŠã€
ãããŸããã§ããããªãããã®ãœãŒã¹ã³ãŒãã®ããªãã®
éšåã¯ç§ä»¥å€ã®äººéãæžãããã®ã§ãã
ãã以åã«ããããŸã§20幎ã«ããã£ãŠè¡ã£ãŠãããœãŒã¹
ã³ãŒãã¬ãã¥ãŒ(100äžè¡åäœã«ãªãã¯ã)ã§ããããã
ã£ãstaticã®èª€çšãèŠãèšæ¶ããªããã§ããããšããã
ãã§ãç§ã®å°è±¡ã§ã¯ãã®æã®èª€çšã¯Cèšèªå
¥éæè²ã®æ®µ
éã§æ©ã
ã«ã¹ã¯ãªãŒãã³ã°ããŠæé€ã§ãããšããæããª
ãããã§ããã
ãããŸã§ç°éšãããšç§ãšã§å°è±¡ãéããšããããäžéäž
è¬ãæšæºãšèããŠããããã°ã©ãã³ã°ã¹ãã«ãšããã®ã
ã©ã®ãžãã®ã¬ãã«ã«ããã®ãéåžžã«æ°ã«ãªããŸãããã
ã¯ã©ããªãã ãã...ã
> > ãšããããã§ãç§ã«ã¯ã©ããç°éšããã®å±æ©æãããŸã
> > ãã€ã¬ã¯ãã«ã¯äŒãã£ãŠããªããã§ããã...ã
> 倪ç°ãã
> http://rec.ncos.co.jp
> ã§ãçŽïŒïŒåãããé芧ãã ãã£ãã®ã«ããŸã é§ç®ïŒ
é§ç®ã§ããã
Junn Ohta wrote:
> > grep static *.h
> > ããŠãããŸããïŒ
> (äžç¥)
> ãããã£ãŠã ããããããªstaticã¯èŠã€ãããŸããã§ããã
> ãªãããã®ãœãŒã¹ã³ãŒãã®ããªãã®
> éšåã¯ç§ä»¥å€ã®äººéãæžãããã®ã§ãã
ãªããªããæãã(^^;
> staticã®èª€çšãèŠãèšæ¶ããªããã§ããã
ããããã«æããïŒïŒïŒ
> ç§ã®å°è±¡ã§ã¯ãã®æã®èª€çšã¯Cèšèªå
¥éæè²ã®æ®µ
> éã§æ©ã
ã«ã¹ã¯ãªãŒãã³ã°ããŠæé€ã§ãããšããæããª
> ãããã§ããã
ãstaticã«é åã確ä¿ãããã£ãŠããšã¯èŠããŠãŠãã
å¯èŠç¯å²ããã©ã€ããŒãã«ãªãã£ãŠããšã¯èŠããŠãªãã¿ããã§ãã(^^;
ïŒstatic宣èšããªã颿°ã¯Dynamic loadãããšã§ãæã£ãŠããã ãããïŒ(ç¬)ïŒ
> ããã¯ã©ããªãã ãã...ã
ç§ãäºå®ã«åºã¥ããã£ã¯ã·ã§ã³ã£ãŠããšã§ã
ãã10幎äœåã®ããšã§ãã
Scene1ïŒè¬ã®libm
ããšããããã°ã©ã ããªã³ã¯ããŠãããšããããæ¥çªç¶
ããUndefined symbol : (颿°åå€±å¿µãæµ®åå°æ°ç¹æŒç®é¢æ°)
ããšåºãã
ã远ããããŠã¿ããšããšãããšããã§ãã®é¢æ°ãçºèŠã
ãïŒæ³šïŒãã®ã¢ãžã¥ãŒã«ãæ±ãããŒãã«æ°ã¯å€ããŠ256å(ç¬))
ããã®æ
åœã«èããŠã¿ããšãããã·ã¥ããŒãã«ãåç
§ããéã«
ã䜿ã£ãŠãããããã
ãã§ãããšããšã©ïœé 匵ã£ãŠã256åçšåºŠããæ±ããªãã®ã«ã
ãïŒããããé
眮座æšãšããå¥çš®ã®ã€ã³ããã¯ã¹ä»ãããŒã¿ã§ïŒ
ãäœã§ããã·ã¥ããŒãã«ã䜿çšããŠããã®ããèããŠã¿ããšãäžèšã
ãã䜿ã£ãŠã¿ããã£ãããã
ãè¶£å³ã§äœã£ãŠããããïœ(ç)
Scene2ïŒããã£ãŠç·ïŒ
ããã®ããšããããã°ã©ã é¢é£ã§ãã°ã©ãã£ãã¯ã©ã€ãã©ãªçµç±ã§ç·è²ã
ãæå®ãããšãã©ããã©ãèŠãŠã綺éºãªç·è²ã«èŠããªãã
ããœãŒã¹ã³ãŒãããã£ã±ãã£ãŠïŒããã远ããããŠã¿ããš
ãç·è²ã®ã«ã©ãŒãããã
ããR:ïŒç¢ºã100以äžã®å€ïŒãG:255ãB:ïŒç¢ºã100以äžã®å€ïŒ
ãã§ããã®æ
åœã«èããŠã¿ããšãäžèšã
ããæ¬ã«ããèŒã£ãŠãããã
ã100æ©è²ã£ãŠãçŽããïŒããšèšã£ããã
ããæ¬ããããªã£ãŠããããâŠâŠâŠâŠâŠâŠ(--#
ä»ã«ãè²ã ãããã©ããã®ãžãã§(ç¬)
ã
> > http://rec.ncos.co.jp
> > ã§ãçŽïŒïŒåãããé芧ãã ãã£ãã®ã«ããŸã é§ç®ïŒ
> é§ç®ã§ããã
ç§ãèŠãŠçŽæçã«æããããšã
ãããã\98,000-ã§å£²ããã®ïŒ(ç¬)ãã ã£ããããŠ(^^ã
ãšããã®ãä¿¡ããããã®ã§ãã1人ã2人ãããã人éã
ãããããããŸãããããã£ãšäžè¬çã«ãããããåŸå
ãããããšããããã»ã©ã®äººæ°ã«ã¯åºäŒã£ãããšããªã
ãã®ã§...ã
> ç§ãäºå®ã«åºã¥ããã£ã¯ã·ã§ã³ã£ãŠããšã§ã
> ãã10幎äœåã®ããšã§ãã
>
> Scene1ïŒè¬ã®libm
ãããã¹ãã«ã®åé¡ã§ã¯ãªããŠéçºã«å¯Ÿããå§¿å¢ã®åé¡
ã§ããããç°éšããã®é ãæ©ãŸããŠãããããªã¹ãã«ã®
åé¡ã«ã€ããŠã¯éã«ã¯ãªã¢ãããŠãããšãã£ãŠãããã
ããªæ°ãããŸãã
ã§ããªãã§ãããªã³ãŒããæžããã ãããã©ãããå質
ã®ãã®ãéçºãããã«ã€ããŠã¯èšèšæã«æããã«ãããŠ
ããããã§ããããããã«åãããããªã³ãŒããæžãã
ãšæã£ããããªãã®ããµã€ãã§ãããããããšãèšèšãš
éçºããŸã£ããåé¢ããŠããŠãéçºéšçœ²ã«ã¯æ©èœä»æ§ã
ããããæž¡ã£ãŠããªãã®ããª? å質åäžã®ææšãšãããŒ
ã¿ã¬ã€ã¢ãŠãã¿ãããªãã®ãååšããªã?
> Scene2ïŒããã£ãŠç·ïŒ
ãããªããããã®æ¬ãæšãŠãããŠçµããã§ãããã:-)
ã©ãããåèæç®ãå©çšããããããã«ã€ããŠã¯æè²ã®
äžéšã§ããããããéçºéå§æã«èšèšåŽããããçšåºŠã®
æ
å ±æäŸãè¡ãã°ãã話ã§ãã
ãšããããã§ããªããèšèšã»éçºéšéã®äœããããã®ã
ã®ã«åé¡ããããããªæ°ãããŸãã?
> ç§ãèŠãŠçŽæçã«æããããšã
> ãããã\98,000-ã§å£²ããã®ïŒ(ç¬)ãã ã£ããããŠ(^^ã
ããã ãå
·äœçãªæ©èœããã€ãœãããªããããŸã䜿ãã°
ããã«å
ããšãããã§ãã10人ã1æ¥ããã£ãŠãããã°
ãããããã£ãšå®ãã€ãããã§ãããã
ãããããããããããœããããããããã»ã©åœ¹ã«ç«ã€
çŸå Žã£ãŠã©ããªçŸå Žãªãã ããšããã»ããç§ã«ãšã£ãŠã¯
ãã£ãœã©è
åšãªãã§ãã...ã
ç§ã¯ããéèŠã»æ³šæäºé
ãã«ããã®ããã°ã©ã ã®äžéšã¯ãããŒã¿ã®å²ãä»ãã
ç¥ããªãããã°ã©ããèŠæ§èŠçäŒŒã§æžããŠããŸãããšæžããŠãããŠã»ãããšæ
ããŸããã
ãããèªãã§ã©ã®ããã«å€æãããã¯å®¢æ¬¡ç¬¬ã
--
N-Yas <cep0...@nyc.odn.ne.jp>
"tabe" <ta...@mug.biglobe.ne.jp> writes:
> ããã¯ã"Takashi SAKAMOTO" ãžçºæ³šæžã¿ã§ãã
> http://groups.google.com/groups?hl=ja&th=f27fc10aae2b44d6
> æ©ããèŠãªããšæ¶ãã¡ããã
ãªãã§ãããå¿
èŠãªã®ã¯ãã³ãã€ã³ãã®ãã§ãã¯æ©èœã§ãå¥ã«æ§æãŸã§èŠãªã
ãŠãå®çšã«ã¯èããããªæ°ãããã®ã§ããã
oh...@src.ricoh.co.jp (Junn Ohta) writes:
> ããšãã°æååãªãã©ã«ã®é£çµããããã©ããããã§ã
> ã¯ãããã®ãªãããã¹ãŠã®ãœãŒã¹ã«å¯ŸããŠ
> (1) ããªããã»ããµãŒãéã(cc -E)
> (2) æ®ã£ãããªããã»ããµãŒæç€ºè¡ãæšãŠ(grep -v)
> (3) ãã¹ãŠã®ç©ºçœ(ã¹ããŒã¹ãã¿ããæ¹è¡)ãæšãŠ(tr -d)
> (4) æ®ãã®ããã¹ãäžã«""ããããã©ãã調ã¹ã
> ã§ã ãããã®ç®çã¯æãããããªæ°ãããŸãã
>
> (3)ã®çµæã¯æ¹è¡ã®ãªã1è¡ã®é·ãŒãããã¹ãã«ãªãã®ã§ã
> (4)ã®åŠçã«äœã䜿ããã§ã¡ãã£ãšæ©ããããããŸãã
> ããCã§æžããã£ãŠã¡ããã¡ããã£ãšæžãã¡ããçšåºŠã®
> ãã®ã§ãããã
Junn Ohta ããã®ææ¡ãããŠãããããªæ¹æ³ã§ãååäœæ¥ã®è² è·ã¯è»œæžã§ãã
ãšæãã®ã§ãããå
šãŠã®ã±ãŒã¹ã«å¯Ÿå¿ã§ãããããªã補åãããªããšé§ç®ãªã
ã§ããããïŒ
# äœã§ãããã§ã C Compiler ã®äžã§éããªããšé§ç®ãªã®ã§ããïŒ
my printf ã®å Žåã§ããããªããã»ããµãéããŠãæç€ºè¡ãæšãŠãŠâŠããã¹ã
äžãã my printf ã®éšåãæãåºããŠãæååéšåã® % ã®æ°ãšåŒæ°ã®æ°ãæ¯
èŒããçšåºŠã§ã
ç§ã Ohta ããã®ãã£ãããããããã«
> > ãšããããã§ãç§ã«ã¯ã©ããç°éšããã®å±æ©æãããŸã
> > ãã€ã¬ã¯ãã«ã¯äŒãã£ãŠããªããã§ããã...ã
ãšå±æ©æãäŒãããŸãããããã ãåé¡èŠããŠããã®ã«ããperl ã§ç°¡åãª
check script ãçšæããããšãããããææ®µãçšæãããŠãªã(ããã«æãã)
ã¢ã³ãã©ã³ã¹ããããæãããŠããã®ãããããŸããã
--
---
Takashi SAKAMOTO (PXG0...@nifty.ne.jp)
"red brick" <f...@qc4.so-net.ne.jp> wrote in message
news:2HBn8.5$qI2....@newsall.dti.ne.jp...
> ã埡æãããããªãããããã§ããã°ã¯åºããã®ãªã®ã§ãã
ããã§ãããåºãŸãã
ãã°ã®å芧äŒã¯ãhttp://rec.ncos.co.jp
éãã§ã£ãŠäžããã
> # ãã°ãããªãäžå ·åã£ãŠã®ããããã
ã»ãããã®ãªã
ã»ä»æ§ã®ãªãïŒïŒãããäžçªã€ããããªïŒ
ã»äœ¿çšã®ãªãïŒïŒã§ãã売ããªããã°ã飯é£ã¹ããªããïŒ
ïŒãããŸãé¢çœããªããã
"Junn Ohta" <oh...@src.ricoh.co.jp> wrote in message
news:a80jsm$9hn$1...@ns.src.ricoh.co.jp...
> > ç§ãèŠãŠçŽæçã«æããããšã
> > ãããã\98,000-ã§å£²ããã®ïŒ(ç¬)ãã ã£ããããŠ(^^ã
売ããŸããã(^^ã
ãåæäœ¿ã£ãŠ ããå¥ã®æŒ¢åã§æžãããïŒïŒã
> ããã ãå
·äœçãªæ©èœããã€ãœãããªããããŸã䜿ãã°
> ããã«å
ããšãããã§ãã10人ã1æ¥ããã£ãŠãããã°
> ãããããã£ãšå®ãã€ãããã§ãããã
ïŒä»¶ã£ãŠå¹Ÿããªãã§ããããïŒ
å
¬éããŠãäŒç€Ÿã¯ãªãã§ããããã©ã
> ãããããããããããœããããããããã»ã©åœ¹ã«ç«ã€
> çŸå Žã£ãŠã©ããªçŸå Žãªãã ããšããã»ããç§ã«ãšã£ãŠã¯
> ãã£ãœã©è
åšãªãã§ãã...ã
é·èå€ªç°æ§ã
ãã®äžèšã§ãæšæ¥ã¯ïŒïŒïŒã¢ã¯ã»ã¹ã®
æ°èšé²ã§ããã
ããããšãããããŸãã
ã£ãŠäºã¯ã
ããããããã»ã©åœ¹ã«ç«ã€çŸå Žã£ãŠãããããã
ãã°ã²ãšã€æœ°ããŠãããããšããå売ã§ãããã°æ¥œãã
ãã§ããã©ã(â»)ãäžã®è©Šç®ã¯æ®å¿µãªãããã ã®æé絊
æç®ã§ãã
â»ã²ãŒã æ¥çã§ã¯ãã¹ãå°éã®äŒç€Ÿããã£ãŠãã°ãçºèŠ
ããã°ããã»ã©åã°ãã(ããã«é Œãã ç²æããã)ã
ãã§ãããããã§ããã°ã²ãšã€ãããããšããèšç®ã§
ã¯ãªãã¿ããã§ããã
> é·èå€ªç°æ§ã
é·èæ±ãã¯ãããŠãã ãããããã«ã¯åçšã³ã³ãã€ã©ãŒ
äœã£ãŠã³å幎ãã¿ãããªæ¹ãŸã§åºå
¥ãããŠãããã§ãã
ãããç§ãªãããã ã®ããšãã³ã
In article <3CA3603A...@coral.ocn.ne.jp>,
Tadamasa Tamura <ta...@coral.ocn.ne.jp> writes
>> ãããã£ãŠã ããããããªstaticã¯èŠã€ãããŸããã§ããã
>> ãªãããã®ãœãŒã¹ã³ãŒãã®ããªãã®
>> éšåã¯ç§ä»¥å€ã®äººéãæžãããã®ã§ãã
>ãªããªããæãã(^^;
åãèªåã§æžããšãã¯ãããªããã©ãåŠçãæçŽãããéšåã«ã¯
å
¥ã£ãŠããã®ãèŠãŠããŸããŸããã
>ãstaticã«é åã確ä¿ãããã£ãŠããšã¯èŠããŠãŠãã
>å¯èŠç¯å²ããã©ã€ããŒãã«ãªãã£ãŠããšã¯èŠããŠãªãã¿ããã§ãã(^^;
ååããã£ãŠãªããããªã...
---
Shinji KONO @ Information Engineering, University of the Ryukyus,
PRESTO, Japan Science and Technology Corporation
æ²³éçæ²» @ çç倧åŠå·¥åŠéšæ
å ±å·¥åŠç§,
ç§åŠæè¡æ¯èäºæ¥å£ããããç ç©¶21(æ©èœãšæ§æ)