【问题标题】:What is the advantage of "volatile" in this case?在这种情况下,“易失性”有什么好处?
【发布时间】:2011-08-08 15:42:47
【问题描述】:

我有以下检查 NULL 指针的函数实现。这是Linux驱动的一部分,C代码:

bool is_null_ponter(volatile void* ptr)
{
  return (NULL == ptr)? true : false;
}

在这种情况下,volatile 的优势是什么?为什么不把它放在寄存器里呢?

谢谢。

【问题讨论】:

标签: c linux-device-driver volatile


【解决方案1】:

volatile 有助于将任何指针传递给函数而不会出现错误或警告,即使它是 volatile 限定的。

但这是假的,你看到的驱动好像写的不是很专业。

首先,要完整,这样的指针也应该是const 限定的,只有这样它才能真正捕获所有指针。

那么,这样的功能根本没有用例。在_Bool 上下文(此处为!ptr)中,指针自然会导致正确答案,这是由标准指定的。像你在这里看到的那样做不同的事情可能在内核社区中很不受欢迎,我猜这个驱动程序没有经过适当的审查。

【讨论】:

  • 我同意:当我看到这个时,我的第一个想法是,“我想去看看修订历史,看看是谁把这个小宝石放到了 Linux 存储库中。”
  • 我感觉这段代码是一个指向 volatile 变量的指针(所以每次读取都应该取消引用该指针),而不是一个 volatile 指针,它返回到“不是写得很专业”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-03-03
  • 1970-01-01
  • 2016-12-29
  • 1970-01-01
  • 2016-05-12
  • 1970-01-01
  • 2013-04-23
相关资源
最近更新 更多