C语言中while 循环的妙用

我们都知道,在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)还有另外一些作用,且听下回分解

沙发自己坐:lol

相当于嵌套调用?

不是嵌套,只是C语言中宏定义多条语句的一个方法

java真好用