Deutsch English Français Italiano |
<87wmq88d45.fsf@nosuchdomain.example.com> View for Bookmarking (what is this?) Look up another Usenet article |
Path: ...!2.eu.feeder.erje.net!feeder.erje.net!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail From: Keith Thompson <Keith.S.Thompson+u@gmail.com> Newsgroups: comp.lang.c Subject: Re: Word For Today: =?utf-8?Q?=E2=80=9CUglification=E2=80=9D?= Date: Mon, 11 Mar 2024 18:15:06 -0700 Organization: None to speak of Lines: 43 Message-ID: <87wmq88d45.fsf@nosuchdomain.example.com> References: <uso6or$3t3jn$3@dont-email.me> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Injection-Info: dont-email.me; posting-host="de8f53c78bf32f77c14d770a36ea4d62"; logging-data="4123696"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX18DEp0gEKTDgJfw0kc3Dhg5" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.2 (gnu/linux) Cancel-Lock: sha1:xLWbMNrLJWSNpR+p/EmXr3UYUZ0= sha1:S6MUPxOHdwCEHQ5rBG4ZByQfTQY= Bytes: 2719 Lawrence D'Oliveiro <ldo@nz.invalid> writes: > From /usr/include/«arch»/bits/select.h on my Debian system: > > #define __FD_ZERO(s) \ > do { \ > unsigned int __i; \ > fd_set *__arr = (s); \ > for (__i = 0; __i < sizeof (fd_set) / sizeof (__fd_mask); ++__i) \ > __FDS_BITS (__arr)[__i] = 0; \ > } while (0) > > Note how this macro brings the entire expression for “s” into the > scope containing those temporary “__i” and “__arr” variables. You just > better hope they won’t clash. > > I think there is a clause in the C spec that says names beginning with > underscores (“uglified” names, I think they’re called) are reserved > for library implementors or something. But what happens if one library > implementation depends on another? What keeps the choices of names > from clashing in that situation? Just luck, I guess. N1570 7.1.3: All identifiers that begin with an underscore and either an uppercase letter or another underscore are always reserved for any use. All identifiers that begin with an underscore are always reserved for use as identifiers with file scope in both the ordinary and tag name spaces. I've never heard them call "uglified", though I suppose it's somewhat apt. If the standard library includes code from two or more different implementers, all implementers have a very strong interest in avoiding any clashes. I don't see a real problem here. [...] -- Keith Thompson (The_Other_Keith) Keith.S.Thompson+u@gmail.com Working, but not speaking, for Medtronic void Void(void) { Void(); } /* The recursive call of the void */