【问题标题】:What is the intention of following function?以下功能的目的是什么?
【发布时间】:2014-02-06 06:24:08
【问题描述】:

我在设备驱动程序代码中发现了以下函数。

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

我的问题是他们为什么在这个函数中使用do { } while (0);。他们可以简单地从那里返回,而不是调用这个do { } while (0);。这里有do { } while (0); 有什么特别的原因吗?

【问题讨论】:

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

标签: c linux-kernel linux-device-driver


【解决方案1】:

没有特殊原因使用do while,通常在module_exit 中具有清理功能会取消注册驱动程序。在您的情况下执行 while 将退出。 While(0) 是假的,会立即跳出循环。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-27
    • 2014-08-30
    • 2016-06-07
    相关资源
    最近更新 更多