>  Q&A  >  본문

c++ - goto的使用场景

PHP中文网PHP中文网2715일 전625

모든 응답(5)나는 대답할 것이다

  • PHP中文网

    PHP中文网2017-04-17 14:59:03

    终于见到这个激动人心的问题了. 专程为你写了一篇博文.分享一下本人的goto历程;
    How to use goto?

    회신하다
    0
  • PHPz

    PHPz2017-04-17 14:59:03

    当效果大于可能的对结构的破坏时.(goto 本身无错,不过人力有穷尽,大多时候添加goto反而会造成一些额外的麻烦)
    个人学习中接触到的goto也就用于跳出n层循环.

    회신하다
    0
  • PHPz

    PHPz2017-04-17 14:59:03

    尽可能不要用goto……代码是给人看的,任何影响阅读的代码都不要写出来…

    회신하다
    0
  • 大家讲道理

    大家讲道理2017-04-17 14:59:03

    看过的源码里比较爱用goto的是OpenSSL,因为是纯C写的,又有大量malloc出来的复杂数据结构,所以一个函数退出时必须要进行清理,而且就算是错误中断了流程,也要清理,所以用了goto跳到清理的位置,保证函数只有一个出口。
    C++因为有类对象的析构函数可以执行清理,加上C++11加入的智能指针可以用于自动释放new出来的东西,已经基本不需要这样。很多语言都保留了goto,但是并不推荐用。
    其实C/C++可以用这种方式代替goto:

    do{
        if (...) 
            break;
    } while(0);
    cleanup();

    회신하다
    0
  • 阿神

    阿神2017-04-17 14:59:03

    C的话,函数内随便用,没啥的,C++的话不要用,有try catch等解决问题

    회신하다
    0
  • 취소회신하다