【发布时间】:2014-02-06 06:24:08
【问题描述】:
我在设备驱动程序代码中发现了以下函数。
static void module_exit(void)
{
do { } while (0);
}
我的问题是他们为什么在这个函数中使用do { } while (0);。他们可以简单地从那里返回,而不是调用这个do { } while (0);。这里有do { } while (0); 有什么特别的原因吗?
【问题讨论】:
-
它看起来像“剩余的垃圾”。如果没有完全优化,(空)循环将在第一次 while 条件检查时立即终止。现在,如果循环中有实际代码(可能还有外部),那么它可以使用
break或continue作为流控制的一种形式.. -
优化编译器甚至可以优化整个循环。
标签: c linux-kernel linux-device-driver