Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.c > #396558

Re: "A diagram of C23 basic types"

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>

Show all headers | View raw


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 | NextNext in thread | Find similar


Thread

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