C/C++ÓïÑÔ±à³ÌÐÞÑø2
21¡¢gotoÓï¾äµÄʹÓÃ
—————————
NÄêǰ£¬Èí¼þ¿ª·¢µÄÒ»´ú×Úʦ——µÏ½ÜË¹ÌØÀ(Dijkstra)˵¹ý£º“goto statment is
harmful !!”£¬²¢½¨ÒéÈ¡ÏûgotoÓï¾ä¡£ÒòΪgotoÓï¾ä²»ÀûÓÚ³ÌÐò´úÂëµÄά»¤ÐÔ¡£
ÕâÀïÎÒҲǿÁÒ½¨Ò鲻ҪʹÓÃgotoÓï¾ä£¬³ý·ÇÏÂÃæµÄÕâÖÖÇé¿ö£º
#define FREE(p) if(p) { \
free(p); \
p = NULL; \
}
main()
main()
{
char *fname=NULL, *lname=NULL, *mname=NULL;
fname = ( char* ) calloc ( 20, sizeof(char) );
if ( fname == NULL ){
goto ErrHandle;
}
lname = ( char* ) calloc ( 20, sizeof(char) );
if ( lname == NULL ){
goto ErrHandle;
}
mname = ( char* ) calloc ( 20, sizeof(char) );
if ( mname == NULL ){
goto ErrHandle;
}
......
ErrHandle:
ErrHandle:
&nb
Ïà¹ØÎĵµ£º
1.ÒýÑÔ
¡¡¡¡C++ÓïÑԵĴ´½¨³õÖÔÊÇ“a better C”£¬µ«ÊÇÕâ²¢²»Òâζ×ÅC++ÖÐÀàËÆCÓïÑÔµÄÈ«¾Ö±äÁ¿ºÍº¯ÊýËù²ÉÓõıàÒëºÍÁ¬½Ó·½Ê½ÓëCÓïÑÔÍêÈ«Ïàͬ¡£×÷ΪһÖÖÓûÓëC¼æÈݵÄÓïÑÔ£¬C++±£ÁôÁËÒ»²¿·Ö¹ý³ÌʽÓïÑÔµÄÌØµã£¨±»ÊÀÈ˳ÆÎª“²»³¹µ×µØÃæÏò¶ÔÏ󔣩£¬Òò¶øËü¿ÉÒÔ¶¨Òå²»ÊôÓÚÈκÎÀàµÄÈ«¾Ö±äÁ¿ºÍº¯Êý¡£µ«ÊÇ£¬C++±Ï¾ ......
ÒÔÏÂÈ«ÎÄ×ªÔØ×Ôhttp://www.keil.com/support/docs/697.htm Copyright © 2010 Keil™, An ARM® Company.
Information in this article applies to:
C51 Versio ......
ÒÔÏÂÈ«ÎÄ×ªÔØ×Ôhttp://www.keil.com/support/docs/1671.htm Copyright © 2010 Keil™, An ARM® Company.
Information in this article applies to:
C51 Version 6.02
&mi ......
Ö»ÊÇÓÐÈËÇ£Éæµ½Ð´³ÌÐòµÄ,ÎÒ¾Í˵˵.Å®Ö÷½ÇÈç¹û²»³öÀ´³ÎÇå¾ÍÒ»±²×Ó±»»ÙÁË.У·çÑϽ÷µÄÇ廪ҲÓÐÕâÖÖÀÄSµÄÐÐΪÓе㲻¿É˼Òâ.ÕÒ³ÌÐòԱд×÷ÒµÖ»ÊǸö·ÖÊֵĽè¿Ú°É.Å®Ö÷½Ç»¹Â÷ÇåÐãµÄ.³öÀ´ÌÖÕ®µÄ"Ô©´óÍ·"ÆäʵҲ²»ÀíÖÇ,»ÙÁËǰŮÓѵÄÐÒ¸£ºÜºÃÂð?
µ«Ô¸CÓïÑÔÃÅÖ»ÊǸöÓéÀÖ ......
ʲôÊǺõijÌÐòÔ±£¿ÊDz»ÊǶ®µÃºÜ¶à¼¼Êõϸ½Ú£¿»¹ÊǶ®µ×²ã±à³Ì£¿»¹ÊDZà³ÌËٶȱȽϿ죿
ÎÒ¾õµÃ¶¼²»ÊÇ¡£¶ÔÓÚһЩ¼¼Êõϸ½ÚÀ´ËµºÍµ×²ãµÄ¼¼Êõ£¬Ö»Òª¿´°ïÖú£¬²é×ÊÁϾÍÄÜÕÒµ½£¬¶Ô
ÓÚËٶȿ죬ֻҪ±àµÃ¶àÒ²¾ÍÊìÄÜÉúÇÉÁË¡£
ÎÒÈÏΪºÃµÄ³ÌÐòÔ±Ó¦¸ÃÓÐÒÔϼ¸·½ÃæµÄËØÖÊ£º
1¡¢ÓÐרÑо«Éñ£¬ÇÚÑ§ÉÆÎÊ¡¢¾ÙÒ»·´ ......