RT
MS 的驱动例子中,好多都是用类似如下方式 来做跳转:
- C/C++ code
do{ ... if (! 函数1) break; ...}while (false);
如果 函数1 返回false 就break ,程序跳转到 “while (false);”之后执行。
我的问题是 :为何不用 try ,或者说用 goto 等来做?
用 do while break 的优势好处是啥啊??
------解决方案--------------------
无论是面向结构编程,或者是面向对象编程,程序员都必须尽可能不使用goto语句。实现所谓无goto编程;
设想一下,如果到处使用goto语句,意味着程序到处都可能是分叉,到处都可能是程序入口,程序绝对乱套。
就本例而言,使用goto将存在的问题是:
看见goto,就需要查找goto的目的地---标号。看见标号,就需要查找可能存在的多处goto语句。
标号做为程序分支的入口,最易引起多义理解,应该避免。不要认为,只会从一处转来,实际上,可能从n处的goto跳转过来。
而break,很好理解,出口就在while()之后,没有多义性。
------解决方案--------------------
个人认为用while(0)的作用是提高代码的健壮性,不是循环,也明确的告诉读者,这个地方的代码只走这一次,而使用break,看楼主的代码里在函数执行后貌似还有逻辑,这应该是跟要实现的功能有关系了,可能那个条件判断的函数里面已经做了什么事情,如果正确返回那后面的事情就不用做了,仅供参考!