gotoを恐れず使う兵共がfinallyや多重breakを語るスレ
■ このスレッドは過去ログ倉庫に格納されています
0864デフォルトの名無しさん
2008/02/23(土) 06:38:46{
resorce *p1 = NULL,*p2 = NULL,*p3 = NULL, *p4 = NULL;
p1 = GetResource1(arg); /* GetResoruce*は失敗した時にNULLを返す */
if(!p1) goto failed;
処理1
p2 = GetResource2(p1);
if(!p2) goto failed;
処理2
p3 = GetResource3(p1,p2);
if(!p3) goto failed;
処理3
p4 = GetResource4(p3);
if(!p4) goto failed;
処理4
FreeResource(p3);
FreeResource(p2);
FreeResource(p1);
return p4;
failed:
if(p4) FreeResource4(p4);
if(p3) FreeResource3(p3);
if(p2) FreeResource2(p2);
if(p1) FreeResource1(p1);
return NULL;
}
これgoto使わないとどう書く?もちろんスマートポインタ、GC、例外は使用不可。
■ このスレッドは過去ログ倉庫に格納されています