当前位置:嗨网首页>书籍在线阅读

16-goto

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

3.5.4 goto

用不用goto一直是一个著名的争议话题,Linux内核源代码中对goto的应用非常广泛,但是一般只限于错误处理中,其结构如:

if(register_a()!=0)

goto err;

if(register_b()!=0)

goto err1;

if(register_c()!=0)

goto err2;

if(register_d()!=0)

goto err3;

...

err3:

unregister_c();

err2:

unregister_b();

err1:

unregister_a();

err:

return ret;

这种goto用于错误处理的用法实在是简单而高效,只需保证在错误处理时注销、资源释放等与正常的注册、资源申请顺序相反。