我们都知道,在C语言中while循环有两种形式,一种是while (…) {…},另一种是do {…} while (…),这两种方式本质上其实并没有什么差别,但是在某些情况下,do {…} while (…)确有着非常独特的作用,
确切地说,应该是do {…} while (0)这种写法。
考虑这样一种情况
#define FOO(x) foo(x); bar(x)
if (condition)
FOO(x);
在FOO被展开的时候会变成foo(x); bar(x)这样就会导致语法错误,但是使用下面这种方式就可以
#define FOO(x) do { foo(x); bar(x); } while (0)
这是在C语言中要使用宏定义多条语句的一个好方法。
此外,使用do {…} while (0)还有另外一些作用,且听下回分解