C / C ++: отказ от volatile считается вредным?

(относится к этому вопросу Безопасно ли изгнание летучих? , но не совсем то же самое, поскольку этот вопрос относится к конкретному случаю)

Есть ли когда-нибудь случай, когда изгнание volatile не считается опасной практикой?

(один конкретный пример: если объявлена ​​функция

void foo(long *pl);

, и я должен реализовать

void bar(volatile long *pl);

с частью моей реализации, требующей bar () для вызова foo (pl), тогда мне кажется, что я не могу заставить это работать как есть, потому что предположения, сделанные при компиляции foo () и компиляции вызывающей bar (), несовместимы.)


Как следствие, если у меня есть volatile переменная v, и я хочу вызвать foo (& v) с помощью чужой функции void foo (long * pl) , и этот человек говорит мне, что это безопасно, я могу просто указать указатель перед вызовом, мой инстинкт состоит в том, чтобы сказать им, что они ошибаются, потому что нет никакого способа гарантировать это, и что они должны изменить dec изменение void foo (volatile long * pl) , если они хотят поддерживать использование изменчивых переменных. Кто из нас прав?

12
задан Community 23 May 2017 в 11:46
поделиться