首先要注意:do..while(0)代表do里面的东西至少被执行一次,在这里仅仅执行一次。此种用法有三个用处:代替{}代码块,实现局部作用域。在某些宏定义时非常有用:使用break跳出,带到使用goto的效果,避免使用goto【有的公司禁止使用goto】.兼容编译器另外,do while(0)可以保证代码在某个地方出错及时退出,而不执行后面的代码,有goto的作用,用在一些初始化或者出错不能在继续进行的代码段中。