Path: csiph.com!eternal-september.org!feeder.eternal-september.org!.POSTED!not-for-mail From: Keith Thompson Newsgroups: comp.arch,comp.lang.c Subject: Re: VAX Date: Mon, 04 Aug 2025 22:21:08 -0700 Organization: None to speak of Lines: 56 Message-ID: <87ldny7397.fsf@example.invalid> References: <0c857b8347f07f3a0ca61c403d0a8711@www.novabbs.com> <2025Jul30.075918@mips.complang.tuwien.ac.at> <2025Aug1.191648@mips.complang.tuwien.ac.at> <106jvc3$qan0$1@dont-email.me> <106kh0k$18ipb$1@paganini.bofh.team> <2025Aug3.185110@mips.complang.tuwien.ac.at> <106otf6$1sov2$1@dont-email.me> <106p4k6$1u13o$1@dont-email.me> <20250804121938.0000122a@yahoo.com> <2025Aug4.140932@mips.complang.tuwien.ac.at> <2025Aug4.165141@mips.complang.tuwien.ac.at> <20250804182839.00000600@yahoo.com> <87sei7do4g.fsf@example.invalid> <20250804220315.00007240@yahoo.com> <6859dc0d-f3b5-481b-8ffb-b4c0a722412e@alumni.caltech.edu> <20250804224049.00006937@yahoo.com> MIME-Version: 1.0 Content-Type: text/plain Injection-Date: Tue, 05 Aug 2025 05:21:11 +0000 (UTC) Injection-Info: dont-email.me; posting-host="8199c04cc1e3df5a88a04e55addf3088"; logging-data="2708491"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+6U0jY6qZmB+s2/nHQy2W1" User-Agent: Gnus/5.13 (Gnus v5.13) Cancel-Lock: sha1:ZpLR6HeE6BAbblwtj+s/6y1lLg8= sha1:4ZWB1fkhcW2GmtH1DjU85u4HKQI= Xref: csiph.com comp.arch:112939 comp.lang.c:394021 Michael S writes: > On Mon, 4 Aug 2025 15:25:54 -0400 > James Kuyper wrote: >> On 2025-08-04 15:03, Michael S wrote: >> > On Mon, 04 Aug 2025 09:53:51 -0700 >> > Keith Thompson wrote: >> ... >> >> In C17 and earlier, _BitInt is a reserved identifier. Any attempt >> >> to use it has undefined behavior. That's exactly why new keywords >> >> are often defined with that ugly syntax. >> >> >> > >> > That is language lawyer's type of reasoning. Normally gcc >> > maintainers are wiser than that because, well, by chance gcc >> > happens to be widely used production compiler. I don't know why >> > this time they had chosen less conservative road. >> >> If _BitInt is accepted by older versions of gcc, that means it was >> supported as a fully-conforming extension to C. Allowing >> implementations to support extensions in a fully-conforming manner is >> one of the main purposes for which the standard reserves identifiers. >> If you thought that gcc was too conservative to support extensions, >> you must be thinking of the wrong organization. >> > > I know that gcc supports extensions. > I also know that gcc didn't support *this particular extension* up > until quite recently. I would guess, up until this calendar year. > Introducing new extension without way to disable it is different from > supporting gradually introduced extensions, typically with names that > start by double underscore and often starting with __builtin. > > BTW, I still didn't think deeply about it and still hope that outside > of C23 mode gcc somehow cared to make name clash unlikely. Using the keyword _BitInt makes name clashes nearly impossible. In C23, it's a new keyword. In pre-C23, it's an implementation-defined keyword that will not clash with any identifier that any portable code will use, or that any non-portable code is at all likely to use for anything other than its new standard meaning. Breaking existing code that uses "_BitInt" as an identifier is a non-issue. There very probably is no such code. The feature can be disabled by not using "_BitInt" in your code, or by using the "-pedantic-errors" option with a standard earlier than C23. I'm not sure how much more conservative gcc could have been. (Likewise for clang.) -- Keith Thompson (The_Other_Keith) Keith.S.Thompson+u@gmail.com void Void(void) { Void(); } /* The recursive call of the void */