解决方案 »

  1.   

    do 
    { } while (0) 
    这用法对于一些繁琐的判断结束可以随时跳出来不执行循环体下面的语句,像下面只是一个简单的例如,实际可以在更多繁琐的语句中使用
    do 

    if(条件1成立)
    break;//跳出来不执行下面的
    if(条件2成立)
    break;//跳出来不执行下面的
    if(条件3成立)
    break;//跳出来不执行下面的



    if(条件N成立)
    } while (0) 
      

  2.   

    http://www.cnblogs.com/flying_bat/archive/2008/01/18/1044693.html
      

  3.   

    就是用一种小技巧借用while循环中的break代替goto。
      

  4.   

    while (0)
    确保这不是一个真正的循环。
      

  5.   

    AfxDebugBreak()这个里面有break;语句,如果错误,直接break跳出循环,避免使用goto让代码复杂化。
      

  6.   

    使用do{}while(0)将宏的内容包裹起来,这样使用宏时后面加';'也不会产生错误或警告
    例如:
    普通形式#deifien EXCHANGE {int tmp; tmp=x;x=y;y=tmp;}
    if(A)
    EXCHANGE(x,y);//展开后分号多余
    else
    ......
    do-while(0)形式
    #define do{int tmp; tmp=x;x=y;y=tmp;}while(0)
    if(A)
    EXCHANGE(x,y);//展开后分号不多余
    else
    ......
      

  7.   

    do 里面的条件判断失败后,break 可以直接跳出循环,这样写代码好控制。