/* before */
void sample(void)
{
struct *ptr = malloc(100);
DoSomeThing_1...;
if(error)
goto _END;
DoSomeThing_2...;
if(error)
goto _END;
DoSomeThing_3...;
if(error)
goto _END;
_END:
free(ptr);
return;
{
/* later */
void sample(void)
{
struct *ptr = malloc(100);
do{
DoSomeThing_1...;
if(error)
break;
DoSomeThing_2...;
if(error)
break;
DoSomeThing_3...;
if(error)
break;
}while(0);
free(ptr);
return;
{
据说使用do{}while(0)能使代码阅读更加清晰,使程序更符合工程化。