Content deleted Content added
More slight cleanup on the intro, trying to make it clearer, read better, and improve correctness |
Adding a section based on a journal preprint about how most C/C++ compilers are buggy regarding volatile behavior. |
||
Line 211:
=== Standards Defects ===
While intended by both C and C++, the current C standard fails to express that the <code>volatile</code> semantics refer to the lvalue, not the referenced object. The respective defect report ''DR 476'' (to C11) is still under review with [[C17 (C standard revision)|C17]].<ref>[http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2244.htm ''Clarification Request Summary for C11.''] Version 1.13, October 2017.</ref>
=== Compiler Defects ===
Unlike other language features of C and C++, the <code>volatile</code> keyword is not well supported by most C/C++ implementations - even for portable uses according to the C and C++ standards. Most C/C++ implementations are buggy regarding the behavior of the <code>volatile</code> keyword.<ref>{{Cite journal |last=Eide |first=Eric |last2=Regehr |first2=John |date=Oct. 2008 |title=Volatiles Are Miscompiled, and What to Do about It |url=https://users.cs.utah.edu/~regehr/papers/emsoft08-preprint.pdf |journal=Proceedings of the Eighth ACM
and IEEE International Conference on Embedded Software (EMSOFT),
Atlanta, Georgia, USA, |via=cs.utah.edu}}</ref> Programmers should take great care whenever using the <code>volatile</code> keyword in C and C++.
==In Java==
|