免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: vivian2086
打印 上一主题 下一主题

[C] 有人用goto 处理错误么 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2011-03-08 11:25 |只看该作者
本帖最后由 donotblock 于 2011-03-08 11:26 编辑

回复 1# vivian2086
  1. if( bar1() < 0 || bar2() <0 ) {
  2.   if( p )
  3.           free( p );
  4.    if( fd >= 0 )
  5.           close( fd );
  6.      return -1;
  7. }
  8.       return 0;
  9.   
  10.    
复制代码
为啥goto?

论坛徽章:
0
12 [报告]
发表于 2011-03-08 11:31 |只看该作者
回复  vivian2086 为啥goto?
donotblock 发表于 2011-03-08 11:25


我这是简化地表达意思,不用这样抬杠吧。那这种呢?
   
     if( bar1() < 0 )
          goto quit;

     bar2();
     
     if( bar3() < 0 )
          goto quit;

论坛徽章:
0
13 [报告]
发表于 2011-03-08 11:33 |只看该作者
要用 尽量避免

论坛徽章:
0
14 [报告]
发表于 2011-03-08 11:45 |只看该作者
我这是简化地表达意思,不用这样抬杠吧。那这种呢?
   
     if( bar1() < 0 )
          goto qu ...
vivian2086 发表于 2011-03-08 11:31


不是抬杠,没理解你化繁为简的意思,  你直接贴这个多好

你这种我会弄个release函数来调用

个人不喜欢goto,除非是很少见的跳出多层循环。 不过看你个人和团队的编码风格了

论坛徽章:
22
丑牛
日期:2014-08-15 14:32:0015-16赛季CBA联赛之同曦
日期:2017-12-14 15:28:14黑曼巴
日期:2017-08-10 08:14:342017金鸡报晓
日期:2017-02-08 10:39:42黑曼巴
日期:2016-11-15 15:48:38CU十四周年纪念徽章
日期:2016-11-09 13:19:1015-16赛季CBA联赛之同曦
日期:2016-04-08 18:00:03平安夜徽章
日期:2015-12-26 00:06:30程序设计版块每日发帖之星
日期:2015-12-03 06:20:002015七夕节徽章
日期:2015-08-21 11:06:17IT运维版块每日发帖之星
日期:2015-08-09 06:20:002015亚冠之吉达阿赫利
日期:2015-07-03 08:39:42
15 [报告]
发表于 2011-03-08 11:52 |只看该作者
内核里面基本上都是这样处理错误的吧

论坛徽章:
0
16 [报告]
发表于 2011-03-08 12:01 |只看该作者
goto 是要用的 但是LZ的例子实在是没体现出goto的价值啊 呵呵

论坛徽章:
0
17 [报告]
发表于 2011-03-08 12:16 |只看该作者
要将goto用到恰到好处是不容易的,对于一个人数较多的团队来说,往往是禁用比允许使用而导致乱用,要少很多麻烦,

论坛徽章:
0
18 [报告]
发表于 2011-03-08 12:55 |只看该作者
我这是简化地表达意思,不用这样抬杠吧。那这种呢?
   
   if( bar1() < 0 )
          goto quit;

     bar2();
     
     if( bar3() < 0 )
          goto quit;
vivian2086 发表于 2011-03-08 11:31



   还有,如果你的函数写成这样,我觉得有可能设计不合理了。 起码bar2依赖某个会在bar1改变的变量,bar3又要依赖某个会在bar2改变的变量,而且你这个函数应该是用来组合某些操作的,但又有共享资源需要释放。。。比较混乱。  凭直觉说的,也有可能你不得不这样做。  

总之,在设计合理的前提下,不得不用goto的地方,或者用了goto能使代码可读性/效率增加的地方,会比较少吧

论坛徽章:
0
19 [报告]
发表于 2011-03-08 12:56 |只看该作者
内核代码用goto挺多的啊

论坛徽章:
0
20 [报告]
发表于 2011-03-08 13:01 |只看该作者
goto该用就用,尤其是跳出多层嵌套的循环的时候.
liwangli1983 发表于 2011-03-08 11:05



林锐放的屁你也当真, 他是在空想 goto的用法~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP