我有以下函数实现来检查NULL指针。这是Linux驱动程序的一部分,C代码:
bool is_null_ponter(volatile void* ptr)
{
return (NULL == ptr)? true : false;
}
在这种情况下,volatile的优势是什么?为什么不把它放在寄存器中?
谢谢。
答案 0 :(得分:9)
volatile
有助于将任何指针传递给函数而不会出现错误或警告,即使它是volatile
限定的。
但这是假的,你看到的司机似乎不是非常专业。
首先,要完成这样的指针也应该是const
限定的,只有它才会捕获所有指针。
然后,根本就没有这种功能的用例。在_Bool
上下文(此处为!ptr
)中,指针自然会导致正确答案,这由标准指定。正如你在这里看到的那样,在内核社区中可能会有很多不满,我想这个驱动程序还没有被正确审核。