C语言如何不用goto、多处return进行错误处理?

参考:https://www.zhihu.com/question/51668402/answer/126921007

do {
break;
} while(0);

Goto不够优雅,对生成代码优化也不友好,实际上多年来关于要不要Goto一直有争论。
而多return的问题在于不好做资源释放,前一个初始化分配的资源如果后面有错是要释放的,这样就导致每次出错return时都要小心保证前面的资源会被释放,这样很容易写出错误代码。

do break while就是一种折衷方案,在while后面根据初始化完整情况统一做资源释放处理。本质上和Goto是一样的,只是没办法跳出两层循环,但是一般初始化代码里不会再有循环,如果有写成函数就好了。

猜你喜欢

转载自blog.csdn.net/hnxyxiaomeng/article/details/82764310