Path: csiph.com!eternal-september.org!feeder.eternal-september.org!reader02.eternal-september.org!.POSTED!not-for-mail From: Keith Thompson Newsgroups: comp.lang.c Subject: Re: lvalue types Date: Tue, 17 Apr 2018 14:13:32 -0700 Organization: None to speak of Lines: 65 Message-ID: References: <2b687d74-f559-43a9-9aec-8a1067467ce2@googlegroups.com> <65e621e1-9bc2-4558-a36d-9712e792494f@googlegroups.com> <117929cb-d6aa-45bc-a5d4-8566bb8c6d58@googlegroups.com> <33a55bca-4174-4e74-9444-8f7f2014b1ad@googlegroups.com> <390abe70-908f-4f19-b6f8-84ec38d3ea90@googlegroups.com> <64746e6c-0c23-47a6-a5d4-d15a33db4aed@googlegroups.com> <83589df8-fa61-4ffb-8fef-09ab50c8fcf4@googlegroups.com> <646ca446-53a3-4006-a476-6f52caacd8c9@googlegroups.com> <108b8472-481e-43b4-9988-2c7e4648449d@googlegroups.com> <2bf95ece-0d26-49aa-8629-87d9c47ef2ad@googlegroups.com> <97b9de3e-f3f8-45c1-8850-a29ca57069d5@googlegroups.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Injection-Info: reader02.eternal-september.org; posting-host="dcaeb3e1ef05ac06fdd3cc3805c02cf2"; logging-data="7607"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX18P2Owoswnt167na/X0GneM" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.1 (gnu/linux) Cancel-Lock: sha1:KzQthyYDDCHOdVa6GegKeGgA+GU= sha1:fpDpV88purx8v0ki2BYOlbYS8xQ= Xref: csiph.com comp.lang.c:129364 supercat@casperkitty.com writes: > On Tuesday, April 17, 2018 at 1:48:34 PM UTC-5, Keith Thompson wrote: >> supercat@casperkitty.com writes: >> > On Tuesday, April 17, 2018 at 12:37:34 PM UTC-5, Keith Thompson wrote: >> >> Or you could just say that the standard as currently written says >> >> the behavior is undefined (because it violates a "shall" outside >> >> a constraint), and save us all a lot of time. >> >> >> >> I fail to see the point of going off on a tangent about categories of >> >> "portable" programs. >> > >> > Many people claim there's no particular need to have the Standard define >> > certain things because implementations can do so whether or not the >> > Standard does. If the Standard is supposed to facilitate the writing of >> > portable programs, having the standard needlessly characterize common >> > constructs as "non-portable" undercuts that goal. >> >> That's not what we're talking about here. >> >> Nobody is saying that there's no need for the standard to define the >> behavior of `obj.m = 42;`. Either the standard *unintentionally* fails >> to define the behavior and that's a flaw that needs to be corrected, or >> the standard does define it. >> >> "It's ok not to define the behavior of `obj.m = 42;`" is not >> something that anyone has claimed explicitly or implicitly. >> >> If that's the claim you're arguing against, you win. > > It was apparent even in 1992 that the Standard failed to adequately specify > the cases where a union object may be accessed using a pointer to a member. > Had it done so, the answer to DR028 would have been obvious. > > Between 1992 and 1999, the lack of clarity might have been reasonably > regarded as an oversight. Do you think the failure to address the issue > in not just one but two subsequent revisions of the Standard continues to > be a result of mere oversight? Yes, I do. It took three tries for the standard to come up with a consistent definition of "lvalue" (compare the definitions in C90, C99, and C11), and the standard still doesn't tell us what the value of a string literal is or state that a parenthesized null pointer constant is a null pointer constant. Yes, I can believe that this is a mere oversight. (And we're talking about accessing a member of a structure, not of a union.) I don't say this to criticize the members of the committee. Defining a language in an English document is hard, and a few glitches are inevitable. Now, without answering with more questions, can you tell us what *you* think? Do you believe that the intended behavior of `obj.m = 42;` (where obj is a struct object and m is a member of type int) is anything other than obvious? If you agree with me that the standard currently fails to define that behavior, do you believe that to be deliberate? If so, why do you believe that, and why would they do it? -- 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"