do{}while(0) 的作用

在cocos2d-x源码中,有大量的这种do{}while(0)的用法,例如这个:
do
{
CCImage*pImage=newCCImage();
CC_BREAK_IF(NULL==pImage);
bRet=pImage->initWithString(text,(int)dimensions.width,(int)dimensions.height,eAlign,fontName,(int)fontSize);
CC_BREAK_IF(!bRet);
bRet=initWithImage(pImage);
CC_SAFE_RELEASE(pImage);
}while(0);
根据语意,这样写至少保证do后面的代码块执行一次。
这样写的意义是什么?为什么不直接使用块,而一定要加上dowhile循环?
潇潇雨雨
浏览 397回答 2
2回答

ABOUTYOU

发现这个问题一搜一大堆哦,题主确定不是SF的托么,哈哈,开个玩笑有时候只是为了代码分块,比仅仅使用{}更直观些。当你执行一段代码到一半,想跳过剩下的一半的时候,如果你正处于dowhile循环中,则能用break达到这个目的。变形的goto,有些公司不让用goto。这样做也可以是兼容各种编译器。为了宏展开的时候不会出错。如果直接放在花括号里会出错的这篇文章很详细哦
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript