Weird mismatch between cdefs and stdatomic
Brian Inglis
Brian.Inglis@SystematicSw.ab.ca
Wed Jan 30 08:00:00 GMT 2019
On 2019-01-30 00:15, LRN wrote:
> On 28.01.2019 17:02, LRN wrote:
>> This[0] and this[1]. One header checks for atomic C/CXX extensions *and* for
>> the presence of a C++ compiler, while the other only checks for extensions.
>> The result is that the _Atomic() macro is *not* defined in cdefs.h when
>> compiled with C++, but the stdatomic.h atomic macros assume that it is, and try
>> to access the "__val" struct member, with predictable and sad results.
>> I just stumbled upon this while compiling OpenSSL, and wanted to see if anyone
>> else encountered this problem.
> There is also a "!defined(__STDC_VERSION__) || __STDC_VERSION__ < 201112L"
> condition in cdefs.h that is not reproduced in stdatomic.h. So my initial guess
> seems to have been incorrect - it's not about C vs C++ compiler, it's about C11
> vs C99 compiler modes.
Search or man feature_test_macros or look at
https://sourceforge.net/p/predef/wiki/Standards/
and for idiosyncracies
https://sourceforge.net/p/predef/wiki/Compilers/
as of two years ago on the wiki; the downloads are six years old; for Windows see
https://docs.microsoft.com/en-us/cpp/visual-cpp-language-conformance
as MS VC slowly moves towards C99 and C11 support for C++11 and C++14
conformance; details below
https://social.msdn.microsoft.com/search/en-US/feed?query=conformance&rn=Visual%20C%2b%2b%20Team%20Blog&rq=site%3ahttps%3a%2f%2fblogs.msdn.microsoft.com%2fvcblog&format=RSS
--
Take care. Thanks, Brian Inglis, Calgary, Alberta, Canada
This email may be disturbing to some readers as it contains
too much technical detail. Reader discretion is advised.
--
Problem reports: http://cygwin.com/problems.html
FAQ: http://cygwin.com/faq/
Documentation: http://cygwin.com/docs.html
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
More information about the Cygwin
mailing list