1. 程式人生 > >C語言如何不用goto、多處return進行錯誤處理?

C語言如何不用goto、多處return進行錯誤處理?

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

do {
break;
} while(0);

Goto不夠優雅,對生成程式碼優化也不友好,實際上多年來關於要不要Goto一直有爭論。
而多return的問題在於不好做資源釋放,前一個初始化分配的資源如果後面有錯是要釋放的,這樣就導致每次出錯return時都要小心保證前面的資源會被釋放,這樣很容易寫出錯誤程式碼。

do break while就是一種折衷方案,在while後面根據初始化完整情況統一做資源釋放處理。本質上和Goto是一樣的,只是沒辦法跳出兩層迴圈,但是一般初始化程式碼裡不會再有迴圈,如果有寫成函式就好了。