[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Immediate doubles (up to 2^256) and rationals coming to Guile 3
From: |
Chris Vine |
Subject: |
Re: Immediate doubles (up to 2^256) and rationals coming to Guile 3 |
Date: |
Sat, 8 Jun 2019 10:08:25 +0100 |
On Sat, 08 Jun 2019 10:07:45 +0200
Arne Babenhauserheide <address@hidden> wrote:
[snip]
> Wow, I didn’t know that you could do that.
>
> However: "The details of that allocation are implementation-defined, and
> it's undefined behavior to read from the member of the union that wasn't
> most recently written." https://en.cppreference.com/w/cpp/language/union
>
> Can you guarantee that this works?
This is C and not C++ and the provision to which you refer does not
apply.
Reading from a member of a union other than the one last written to is
implementation defined in C89/90, and defined in C99 (with Technical
Corrigendum 3) and above, although it might include a trap
representation (but wouldn't on any platform supported by guile). You
might want to see in particular footnote 95 of C11 (which isn't
normative but is intended to explain the provisions of §6.2.6.1 which
are).
gcc and clang have always supported type punning through unions.
Chris
- Re: Immediate doubles (up to 2^256) and rationals coming to Guile 3, (continued)
Re: Immediate doubles (up to 2^256) and rationals coming to Guile 3, Mark H Weaver, 2019/06/07