do while(0)的妙用
程序员文章站
2024-03-23 13:50:58
...
do while(0)的妙用
do while(0);就如同一个花括号,具有独立的作用域,花括号所表示的符合语句是一个整体,do while(); 语句同样是一个整体,同样可以在if 等条件语句后直接使用。但是后所不同的是,do while(); 作为循环语句还可以使用break 跳出循环,程序执行流也就随之来到了do while(0);的下一条语句。下面就来介绍 do while(0);的三条妙用。
妙用1: do while(0); 可以用来代替goto语句,在需要使用goto的地方直接break。
妙用2: do while(0); 可以使用在复杂的宏函数中,如下代码就不太完备:
#define FUNCTION() {func(); func();}
当我们在调用这个宏函数时,就会在大括号的末尾多出一个分号。
{func(); func();};
虽然可以将分号作为一条空语句来理解,但是遇到更加复杂的宏定义时就会无济于事,所以我们在这里需要用到do while(0);
#define FUNCTION() do{func(); func();} while(0)
这样,我们最后添加的分号就成了do while语句的结束标致,而不是一个空语句了。
妙用3:避免由宏引起的警告。
定义空宏的时候有些编译器会给出警告,这是可以使用do while(0)。