Перейти к содержанию
    

volatile всё-таки нужен или нет?

Хотелось-бы пруфлинк, если можно. Сколько копал на тему volatile - нигде не видел подобного разделения на то где требуется, а где не требуется volatile.

ISO9899 Programming Languages C

5.1.2.3 Program execution

...

8

EXAMPLE 1

An implementation might define a one-to-one correspondence between abstract and actual

semantics: at every sequence point, the values of the actual objects would agree with those specified by the

abstract semantics. The keyword volatile would then be redundant.

...

Можно также посмотреть п.п. 4, 5, 9.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ой не знаю не знаю...

An implementation might define... а мэй нот дэфайн...

что делать, придется мне почитать стандарт.

 

ну вот, а чуть ниже

Alternatively, an implementation might perform various optimizations within each translation unit, such

that the actual semantics would agree with the abstract semantics only when making function calls across

translation unit boundaries. In such an implementation, at the time of each function entry and function

return where the calling function and the called function are in different translation units, the values of all

externally linked objects and of all objects accessible via pointers therein would agree with the abstract

semantics. Furthermore, at the time of each such function entry the values of the parameters of the called

function and of all objects accessible via pointers therein would agree with the abstract semantics. In this

type of implementation, objects referred to by interrupt service routines activated by the signal function

would require explicit specification of volatile storage, as well as other implementation-defined

restrictions.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а мэй нот дэфайн...

Если сомневаетесь, загляните в ассемблерный листинг. У меня почему-то есть уверенность, что там ничего лишнего не соптимизировалось. Да и сами говорите "тут вдруг всё работает даже с -O3".

 

Процитированный Вами п.9 о том, что усилия одного оптимизатора могут привести к странноватым результатам, о чём писал Сергей Борщ, а усилия другого - не привести, и что знакомство с "implementation-defined restrictions" приветствуется.

В этом смысле volatile на всё, поминаемое в прерываниях - платформо- и компиляторо-независимая панацея.

Но мне проще подстелить соломки какого-либо вида.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нашел понятное обьяснение про volatile переменные с примерами.

volatile_for_chainiks.pdf

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...