В чем преимущество «волатильности» в этом случае? - PullRequest
2 голосов
/ 08 августа 2011

У меня есть следующая реализация функции, которая проверяет NULL-указатель.Это часть драйвера Linux, код C:

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

В чем преимущество volatile в этом случае?Почему бы не поставить его в реестр?

Спасибо.

1 Ответ

9 голосов
/ 08 августа 2011

volatile помогает, что любой указатель может быть передан в функцию без ошибок или предупреждений, даже если он квалифицирован volatile.

Но это обман, драйвер, который вы видите, кажется, не записаночень профессионально.

Во-первых, чтобы быть полным, такой указатель также должен быть const квалифицированным, только тогда он будет охватывать действительно все указатели.

Тогда нет никакого варианта использования для такогофункционировать на всех.В контексте _Bool (здесь !ptr) указатели естественным образом приводят к правильному ответу, это определяется стандартом.Делать это иначе, как вы видите здесь, вероятно, неодобрительно в сообществе ядра, и я думаю, что этот драйвер не был рассмотрен должным образом.

...