Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.c > #396558
| From | Tim Rentsch <tr.17687@z991.linuxsc.com> |
|---|---|
| Newsgroups | comp.lang.c |
| Subject | Re: "A diagram of C23 basic types" |
| Date | 2026-02-02 09:34 -0800 |
| Organization | A noiseless patient Spider |
| Message-ID | <86pl6njbh9.fsf@linuxsc.com> (permalink) |
| References | (16 earlier) <20250409124900.00000fa1@yahoo.com> <861pu1ccsg.fsf@linuxsc.com> <87a58pq9ig.fsf@nosuchdomain.example.com> <865xj79khz.fsf@linuxsc.com> <875xj73sqx.fsf@nosuchdomain.example.com> |
Keith Thompson <Keith.S.Thompson+u@gmail.com> writes: > Tim Rentsch <tr.17687@z991.linuxsc.com> writes: > >> Keith Thompson <Keith.S.Thompson+u@gmail.com> writes: >> >>> Tim Rentsch <tr.17687@z991.linuxsc.com> writes: >>> [...] >>> >>>> Trailing commas in argument lists and/or parameter lists >>>> could be accepted as an extension, even without giving a >>>> diagnostic as I read the C standard, but implementations >>>> are certainly within their rights to reject them. >>> >>> I believe a diagnotic is required. >>> >>> C17 5.1.1.3: >>> >>> A conforming implementation shall produce at least one >>> diagnostic message (identified in an implementation-defined >>> manner) if a preprocessing translation unit or translation >>> unit contains a violation of any syntax rule or constraint, >>> even if the behavior is also explicitly specified as undefined >>> or implementation-defined. >>> >>> A trailing comma on an argument or parameter list is a violation >>> of a syntax rule. >> >> I believe a diagnostic is not required, because the C standard >> explicitly allows extensions. If such diagnostics were required >> even for constructions that are part of extensions, then there is no >> reason to allow extensions, because whatever behavior is desired >> could be done anyway, under the freedom granted by undefined >> behavior. It would be stupid to explicitly grant permission to do >> something if it could be done anyway without the permission. And >> the people who wrote the C standard are not stupid. > > I believe that the fact that a conforming implementation provides an > extension does not relieve it of its responsibility to diagnose syntax > errors and constraint violations. > > The authors of both gcc and clang appear to agree. A concrete example: > gcc has an extension (which clang also provides) allowing the middle > operand of a conditional operator to be omitted, so that `x ? : y` is > equivalent to `x ? x : y`, except that x is evaluated only once. > > By default, use of this extension (which would be a syntax > error if the extension did not exist) is not diagnosed; neither > compiler is conforming by default. With "-std=c17 -pedantic" or > "-std=c17 -pedantic-errors", both issue a warning or error message, > respectively. Your logic is bad. First the diagnostics are produced only because you have asked them to be produced by giving the -pedantic option. Second there are other cases where diagnostics are not given even with -pedantic. Third the statement that without -pedantic the compilers are not conforming does not mean that their behavior in any particular case is not conforming; the argument implicitly uses circular logic, using the non-issuance of a diagnostic to imply that the compilers are not conforming, but whether a conforming implmentation must issue a diagnostic is the question being considered. It doesn't make sense for the C standard to include a statement that extensions are allowed if they would be allowed anyway.
Back to comp.lang.c | Previous | Next — Next in thread | Find similar
Re: "A diagram of C23 basic types" Tim Rentsch <tr.17687@z991.linuxsc.com> - 2026-02-02 09:34 -0800 Re: "A diagram of C23 basic types" Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2026-02-02 16:15 -0800
csiph-web