Jump to content

    
Sign in to follow this  
sigmaN

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

Recommended Posts

Хотелось-бы пруфлинк, если можно. Сколько копал на тему 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.

Share this post


Link to post
Share on other sites

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

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.

Share this post


Link to post
Share on other sites
а мэй нот дэфайн...

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

 

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

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

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this