在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循环?
2 回答
ABOUTYOU
TA贡献1812条经验 获得超5个赞
发现这个问题一搜一大堆哦,题主确定不是SF的托么,哈哈,开个玩笑有时候只是为了代码分块,比仅仅使用{}更直观些。当你执行一段代码到一半,想跳过剩下的一半的时候,如果你正处于dowhile循环中,则能用break达到这个目的。变形的goto,有些公司不让用goto。这样做也可以是兼容各种编译器。为了宏展开的时候不会出错。如果直接放在花括号里会出错的这篇文章很详细哦
添加回答
举报
0/150
提交
取消