Path: csiph.com!eternal-september.org!reader02.eternal-september.org!.POSTED!not-for-mail From: Keith Thompson Newsgroups: comp.std.c Subject: Re: Add @ to basic character set? Date: Sun, 06 Dec 2020 15:49:36 -0800 Organization: None to speak of Lines: 46 Message-ID: <87czzmfqb3.fsf@nosuchdomain.example.com> References: <87pn3ngao5.fsf@nosuchdomain.example.com> <87lfeafv1r.fsf@nosuchdomain.example.com> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: reader02.eternal-september.org; posting-host="8c1d1df3fcf9f83d93d1ccf626f65b8d"; logging-data="19846"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX18qbKgke98T8cIZDeH+7aC1" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.3 (gnu/linux) Cancel-Lock: sha1:BnTWT3aH48HKD1Uh0MEUBklXfBg= sha1:SfC6Y/XlJJm6iocpvDVZJHt8i4g= Xref: csiph.com comp.std.c:6176 Richard Damon writes: > On 12/6/20 5:07 PM, Keith Thompson wrote: >> Richard Damon writes: >> [...] >>> The issue with making them part of the basic character set is that it >>> makes any system that can't do this, because it uses a strange character >>> set, non-conforming. Since systems ARE allowed to add any characters >>> they want to the source or execution character set, those that currently >>> support them can do so. Forcing them to be included drops some system >>> from being able to have a conforming implementation, and the committee >>> has traditionally avoided gratuitously making systems non-conforming. >> >> (Context: The ASCII characters '@', '$', and '`'.) >> >> I'd be interested in seeing an implementation for which this would >> be relevant. Such an implementation (a) would be unable to (easily) >> represent those three character in source code and/or during >> execution *and* (b) would otherwise conform to the hypothetical >> edition of the C standard that would add them to the basic character >> set if it were not for this change. > > As was mentioned, all that you need is to want to support ISO/IEC 646 > for a naional character set that doesn't define code point 64 as @ > > This includes Canadian, French, German, Irish, and a number of others. > > See https://en.wikipedia.org/wiki/ISO/IEC_646 for a chart of these. What C implementations support those character sets (and are likely to attempt to conform to a future C standard that adds '@' to the basic character set)? The following characters are also not part of the invariant character set: # [ \ ] ^ { | } ~ (We have trigraphs for those. I *do not* suggest adding trigraphs for @ $ `.) C++ has already dropped trigraphs because support for the old 7-bit national character sets was considered unimportant. (But C++17 did not add @ $ ` to its basic character set.) I understand that C has different issues than C++, but in my opinion adding @ $ ` to C's basic character set would cause no actual harm. -- Keith Thompson (The_Other_Keith) Keith.S.Thompson+u@gmail.com Working, but not speaking, for Philips Healthcare void Void(void) { Void(); } /* The recursive call of the void */