一个do while的小技巧

在资源初始化的代码块中,除了用goto可以用作出错处理之外

还可以使用do { } while(0)

使用break就可以跳出来进行出错处理,缺点是少了标签的层次出错处理。

C++实例代码:截自Mac OSX USB驱动

 1 do {
 2     if(!newDevice->init(deviceAddress, powerAvaliable, speed, maxPacketSize))
 3         break;
 4     if(!newDevice->attach(this))
 5         break;
 6     if(!newDevice->start(this)) {
 7         newDevice->detach(this);
 8         newDevice->release();
 9         break;
10     }
11 
12     return (KIOReturnSuccess);
13 } while(false);
14 
15 return (KIOReturnNoMemory);
posted @ 2012-05-07 12:33  Jojodru  阅读(270)  评论(0编辑  收藏  举报