Path: csiph.com!eternal-september.org!feeder.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail From: Keith Thompson Newsgroups: comp.lang.c Subject: Re: High quality resources for learning modern C? Date: Thu, 08 Jun 2017 09:03:41 -0700 Organization: None to speak of Lines: 45 Message-ID: References: <7b9d7ea8-2525-4f97-a0fe-dcf9830d4848@googlegroups.com> <509d4b2e-0180-4f22-9878-79864c366593@googlegroups.com> <22512f5b-69e9-499d-b240-3e1e1b6335c3@googlegroups.com> <6217598c-3d12-4307-ae53-c2fd195cd3ff@googlegroups.com> <09f7c76e-1d07-42f1-aa83-56d0ffdf9fb9@googlegroups.com> <9e782571-4f2e-412e-b13e-e17dcbf2e6fc@googlegroups.com> <46fdf0f4-2b97-49b6-9dd3-193009d72756@googlegroups.com> <1e83d4df-a8cd-482c-8465-94619396cb7e@googlegroups.com> <2234306d-5ddd-4adf-8548-b0c50665623f@googlegroups.com> <60670cc9-e5fd-4c05-8764-f09ba39afab5@googlegroups.com> <25a64c0c-8065-4626-a5de-a380cbff4cba@googlegroups.com> <10bcff7e-54ca-49e7-aeb4-f715bd268056@googlegroups.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Injection-Info: mx02.eternal-september.org; posting-host="014809c4f49cfafbe03afa6d23552d79"; logging-data="9590"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX18p3hYSAmaSs2olCrZ56mMu" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.1 (gnu/linux) Cancel-Lock: sha1:naoVvbR2daU1fOEOpM5t9Mq6lEM= sha1:63wD/BfT4woPSxwHKSVqke+F9Co= Xref: csiph.com comp.lang.c:111827 David Kleinecke writes: > On Wednesday, June 7, 2017 at 7:25:24 PM UTC-7, Keith Thompson wrote: [...] >> The basic source and execution character sets have not changed across >> C89/C90, C99, and C11. > > I don't know what you mean by "basic source" character set. James Kuyper explained that. > If > one looks at the definition of "identifier" one sees a great many > more nondigit characters allowed than the 53 of C90. The definition of "identifier" doesn't affect the basic or extended source or execution character sets. In C90, the permitted characters in identifiers are the 10 digits, the 26 uppercase letters, the 26 lowercase letters, and underscore. C99 added universal character names and "other implementation-defined characters"; there might not be any. A universal character name consists of \u or \U followed by 4 or 8 hexadecimal digits, all of which were already within the basic source and execution character sets. I don't believe C11 made any changes in this area. For example, x\u1234y is a valid identifier in C99 and C11, but not in C89/C90. (\u1234 designates the ETHIOPIC SYLLABLE SEE character, but it appears in source code as a 6-character sequence starting with a backslash. Displaying that sequence using an appropriate glyph is outside the scope of the standard.) x$y *can* be a valid identifier if $ is one of the "other implementation-defined characters", but it's not portable. > The standard > is not expressed in UTF-8 but that should be easy reinterpret. I > find it odd that I have never seen this extension of the source > character set used, -- Keith Thompson (The_Other_Keith) kst-u@mib.org Working, but not speaking, for JetHead Development, Inc. "We must do something. This is something. Therefore, we must do this." -- Antony Jay and Jonathan Lynn, "Yes Minister"