首页 > 开发 > C++ > 正文

do{}while(0) 的作用

2017-09-11 21:34:48  来源: 网友分享

cocos2d-x 源码 中,有大量的这种 do{}while(0) 的用法,例如这个:

        do        {            CCImage* pImage = new CCImage();            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后面的代码块执行一次。

这样写的意义是什么?为什么不直接使用块,而一定要加上 do while 循环?

解决方案

发现这个问题一搜一大堆哦,题主确定不是SF的托么,哈哈,开个玩笑

  1. 有时候只是为了代码分块,比仅仅使用{}更直观些。
  2. 当你执行一段代码到一半,想跳过剩下的一半的时候,如果你正处于do while循环中,则能用break达到这个目的。
  3. 变形的goto,有些公司不让用goto
  4. 这样做也可以是兼容各种编译器。
  5. 为了展开的时候不会出错。如果直接放在花括号里会出错的

这篇文章很详细哦