刚才看了给软件添加后门的帖子,代码中有do while这样的用法,苦想后无果,于是Google,终得解。有同问的可以看这里,比较详细的解释
http://blog.csdn.net/lovelan1748/archive/2010/02/24/5321558.aspx

解决方案 »

  1.   

    呵呵,这种逻辑,就是为了代替goto
      

  2.   

    Goto 挺好的,没必要非写成这样。
    不死的goto已经证明了这点
      

  3.   

    goto难免出错,顺序执行看着清爽多了,另外do while中使用break能防止过多的判断嵌套
      

  4.   

    C#没必要这么写,因为C#有exception并且还能给出出错原因,而且在宏里用do{}while(0)也不是为了方便跳转,因为没有全局错误码的情况下这么跳转没法分辨错误源。do{}while(0)一般是用来把宏当作执行过程用的,do{}while(0)可以避免预处理多行宏的情况下产生无法编译的语句。
      

  5.   


    do{}while(0)这种完全没有必要的写法我印象里好像是出现在上世纪七八十年代某个C源代码里的一个宏,那个宏的功能只能用这种写法来实现,后来很多人发现这么写很方便于是写多行宏都这么用了,现在在许多C/C++代码里都能看到这种写法。
      

  6.   

    存在即合理嘛,至少可读性是强于goto的