8.19 被误解的关键字:goto
goto的历史争议
劣势
无限制使用goto,特别是往回跳,使程序结构复杂
任何程序都可使用顺序、分支、循环三种结构表示出来
优势
函数内的出错出口的统一处理、指定唯一出口
当多层嵌套时,比break、return更有优势
既能提高效率,也不会破坏程序良好的结构
哪些地方建议使用goto?
- 函数出错时的处理
函数内部模块化设计:将函数主逻辑代码和出错处理部分隔离,
结构更加清晰
代码复用:将一个函数多个出口归并为一个总出口
资源统一处理:内存释放、锁、句柄…
使用注意的一些地方
不要往回跳、只能往前跳
使用goto只能在同一函数内跳转
goto标签一般在两段不同逻辑功能代码的交界处
不能大量使用