C 以下功能的目的是什么?

C 以下功能的目的是什么?,c,linux-kernel,linux-device-driver,C,Linux Kernel,Linux Device Driver,我在设备驱动程序代码中找到以下函数 static void module_exit(void) { do { } while (0); } 我的问题是为什么他们使用do{}while(0)在此函数内。他们可以简单地从那里返回,而不是在(0)时调用这个do{}。是否有任何特殊原因使do{}while(0)此处?使用do时没有特殊原因,通常在模块中,出口具有清除功能,将取消注册驱动程序。在你的情况下,你会退出的。而(0)类似于false case,将立即脱离循环。它看起来像“剩余垃

我在设备驱动程序代码中找到以下函数

static void module_exit(void)
{
        do { } while (0);
}

我的问题是为什么他们使用
do{}while(0)在此函数内。他们可以简单地从那里返回,而不是在(0)时调用这个
do{}。是否有任何特殊原因使
do{}while(0)此处?

使用do时没有特殊原因,通常在模块中,出口具有清除功能,将取消注册驱动程序。在你的情况下,你会退出的。而(0)类似于false case,将立即脱离循环。

它看起来像“剩余垃圾”。如果没有完全优化,(空)循环将在第一次while条件检查时立即终止。现在,如果循环中(可能还有外部)有实际代码,那么它可以使用
break
continue
作为流控制的一种形式。