发现cocos2d-x的函数中经常会用到do while(0)语句,一开始感觉比较奇怪,深研了下,原来这种方法很巧妙。
CCScene* HelloWorld::scene() { CCScene * scene = NULL; do { // 'scene' is an autorelease object scene = CCScene::create(); CC_BREAK_IF(! scene); // 'layer' is an autorelease object HelloWorld *layer = HelloWorld::create(); CC_BREAK_IF(! layer); // add layer as a child to scene scene->addChild(layer); } while (0); // return the scene return scene; }
其中CC_BREAK_IF宏的声明如下:
#define CC_BREAK_IF(cond) if(cond) break
以下的文章为do while(0)妙用的说明,我也转载一次:
http://www.cnblogs.com/flying_bat/archive/2008/01/18/1044693.html