Sujet : Re: Effect of CPP tags
De : Keith.S.Thompson+u (at) *nospam* gmail.com (Keith Thompson)
Groupes : comp.lang.cDate : 15. Mar 2024, 07:56:11
Autres entêtes
Organisation : None to speak of
Message-ID : <874jd83rw4.fsf@nosuchdomain.example.com>
References : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
User-Agent : Gnus/5.13 (Gnus v5.13) Emacs/27.2 (gnu/linux)
Tim Rentsch <
tr.17687@z991.linuxsc.com> writes:
Keith Thompson <Keith.S.Thompson+u@gmail.com> writes:
[...]
(Aside: gcc has an extension adding __int128 as a keyword, supporting
types "__int128" and "unsigned __int128", but only on some target
systems. These do not qualify as extended integer types. I understand
that "__uint128_t" was a hypothetical example.)
>
On the systems I use the identifiers __int128_t and __uint128_t are
both predefined type names (and not keywords), under both gcc and
clang. I see some support for __int128 as a keyword, but the
predefined type names seem to be more reliable (at least in my
environments).
That's odd. The gcc documentation describes __int128 as an extension:
https://gcc.gnu.org/onlinedocs/gcc-13.2.0/gcc/_005f_005fint128.html As an extension the integer scalar type __int128 is supported for
targets which have an integer mode wide enough to hold 128
bits. Simply write __int128 for a signed 128-bit integer, or
unsigned __int128 for an unsigned 128-bit integer. There is no
support in GCC for expressing an integer constant of type __int128
for targets with long long integer less than 128 bits wide.
It doesn't mention __int128_t or __uint128_t at all, though I see it
does recognize both, and as you say it doesn't treat them as keywords.
Likewise for clang, though I haven't checked the clang documentation.
(I might reply to other parts of your post later.)
-- Keith Thompson (The_Other_Keith) Keith.S.Thompson+u@gmail.comWorking, but not speaking, for Medtronicvoid Void(void) { Void(); } /* The recursive call of the void */