Re: "A diagram of C23 basic types"

Liste des GroupesRevenir à cl c 
Sujet : Re: "A diagram of C23 basic types"
De : Keith.S.Thompson+u (at) *nospam* gmail.com (Keith Thompson)
Groupes : comp.lang.c
Date : 03. Feb 2026, 01:15:33
Autres entêtes
Organisation : None to speak of
Message-ID : <87ecn2r8be.fsf@example.invalid>
References : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
User-Agent : Gnus/5.13 (Gnus v5.13)
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:
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.

I see no circular logic.

A concrete example:

int main(void) {
    return 0 ? : 0;
}

This relies on an extension implemented by gcc and clang.
It violates a syntax rule.  (This is proposed as a new feature in
C 202y; see <https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3804.txt>.)

N3220 5.1.1.3 requires a diagnostic for any translation unit
containing a violation of any syntax rule or constraint.  It does
not state an exception to this rule for extensions.  That is the
basis on which I conclude that a diagnostic is required.

The diagnostics are produced because I used a conforming C compiler,
and a conforming C compiler must produce a diagnostic for that
translation unit.  (It happens that a way to do that is to use
"gcc -std=c17 -pedantic", or "-std=c23 -pedantic" if you have a
new enough version of gcc.)

Furthermore, my intent was not to use the behavior of gcc to prove
that my argument is correct.  It was only to demonstrate that
the authors of gcc (and clang) apparently agree that a diagnostic
is required.  I have disagreed with the gcc and clang authors at
times, but in this case I believe they are correct.

I would like the standard to be more explicit on this point.
I would like to see a future edition of the standard explicitly state
that extensions do not affect the requirement for a diagnostic for
violations of syntax rules and constraints.  Or, alternatively, a
future edition could state that such a diagnostic is *not* required
(which would in my opinion be a change from C23.)

I'm sympathetic to the idea that use of an extension should not
trigger a mandatory diagnostic, but 5.1.1.3 is explicit and does
not seem to allow that.

I've kept all the context, since you've posted your followup nearly
10 months after my previous article.  In the future, I may or
may not ignore any followups that are delayed by more than, say,
a month.  A request: If you post a followup after a long delay,
please acknowledge that in the post.

--
Keith Thompson (The_Other_Keith) Keith.S.Thompson+u@gmail.com
void Void(void) { Void(); } /* The recursive call of the void */

Date Sujet#  Auteur
2 Apr 25 * "A diagram of C23 basic types"412Alexis
2 Apr 25 +* Re: "A diagram of C23 basic types"4Lawrence D'Oliveiro
3 Apr 25 i`* Re: "A diagram of C23 basic types"3BGB
3 Apr 25 i `* Re: "A diagram of C23 basic types"2Lawrence D'Oliveiro
4 Apr 25 i  `- Re: "A diagram of C23 basic types"1BGB
2 Apr 25 +* Re: "A diagram of C23 basic types"9Janis Papanagnou
2 Apr 25 i+* Re: "A diagram of C23 basic types"6Kaz Kylheku
3 Apr 25 ii`* Re: "A diagram of C23 basic types"5Janis Papanagnou
3 Apr 25 ii +* Re: "A diagram of C23 basic types"3David Brown
3 Apr 25 ii i`* Re: "A diagram of C23 basic types"2Janis Papanagnou
3 Apr 25 ii i `- Re: "A diagram of C23 basic types"1BGB
3 Apr 25 ii `- Re: "A diagram of C23 basic types"1BGB
2 Apr 25 i+- Re: "A diagram of C23 basic types"1David Brown
3 Apr 25 i`- Re: "A diagram of C23 basic types"1Tim Rentsch
2 Apr 25 +* Re: "A diagram of C23 basic types"348bart
2 Apr 25 i+* Re: "A diagram of C23 basic types"315Muttley
2 Apr 25 ii+* Re: "A diagram of C23 basic types"288David Brown
2 Apr 25 iii+* Re: "A diagram of C23 basic types"284Muttley
2 Apr 25 iiii+* Re: "A diagram of C23 basic types"211Thiago Adams
2 Apr 25 iiiii`* Re: "A diagram of C23 basic types"210Muttley
2 Apr 25 iiiii +* Re: "A diagram of C23 basic types"208bart
2 Apr 25 iiiii i+* Re: "A diagram of C23 basic types"63Muttley
2 Apr 25 iiiii ii+* Re: "A diagram of C23 basic types"5Janis Papanagnou
3 Apr 25 iiiii iii+* Re: "A diagram of C23 basic types"2Janis Papanagnou
3 Apr 25 iiiii iiii`- Re: "A diagram of C23 basic types"1Janis Papanagnou
3 Apr 25 iiiii iii`* Re: "A diagram of C23 basic types"2David Brown
3 Apr 25 iiiii iii `- Re: "A diagram of C23 basic types"1BGB
3 Apr 25 iiiii ii+* Re: "A diagram of C23 basic types"54bart
3 Apr 25 iiiii iii+* Re: "A diagram of C23 basic types"51Kaz Kylheku
3 Apr 25 iiiii iiii+* Re: "A diagram of C23 basic types"48Keith Thompson
3 Apr 25 iiiii iiiii+* Re: "A diagram of C23 basic types"46BGB
3 Apr 25 iiiii iiiiii`* Re: "A diagram of C23 basic types"45Kaz Kylheku
3 Apr 25 iiiii iiiiii +* Re: "A diagram of C23 basic types"41bart
4 Apr 25 iiiii iiiiii i+* Re: "A diagram of C23 basic types"36Lawrence D'Oliveiro
9 Apr 25 iiiii iiiiii ii`* Re: "A diagram of C23 basic types"35Michael S
9 Apr 25 iiiii iiiiii ii +* Re: "A diagram of C23 basic types"21David Brown
9 Apr 25 iiiii iiiiii ii i+* Re: "A diagram of C23 basic types"17BGB
9 Apr 25 iiiii iiiiii ii ii`* Re: "A diagram of C23 basic types"16bart
10 Apr 25 iiiii iiiiii ii ii `* Re: "A diagram of C23 basic types"15David Brown
10 Apr 25 iiiii iiiiii ii ii  +* Re: "A diagram of C23 basic types"5Michael S
12 Apr 25 iiiii iiiiii ii ii  i`* Re: "A diagram of C23 basic types"4Lawrence D'Oliveiro
12 Apr 25 iiiii iiiiii ii ii  i +- Re: "A diagram of C23 basic types"1James Kuyper
12 Apr 25 iiiii iiiiii ii ii  i `* Re: "A diagram of C23 basic types"2David Brown
12 Apr 25 iiiii iiiiii ii ii  i  `- Re: "A diagram of C23 basic types"1BGB
10 Apr 25 iiiii iiiiii ii ii  +* Re: "A diagram of C23 basic types"4Muttley
10 Apr 25 iiiii iiiiii ii ii  i`* Re: "A diagram of C23 basic types"3bart
10 Apr 25 iiiii iiiiii ii ii  i +- Re: "A diagram of C23 basic types"1Muttley
12 Apr 25 iiiii iiiiii ii ii  i `- Re: "A diagram of C23 basic types"1Lawrence D'Oliveiro
10 Apr 25 iiiii iiiiii ii ii  +* Re: "A diagram of C23 basic types"4bart
10 Apr 25 iiiii iiiiii ii ii  i`* Re: "A diagram of C23 basic types"3David Brown
10 Apr 25 iiiii iiiiii ii ii  i `* Re: "A diagram of C23 basic types"2bart
10 Apr 25 iiiii iiiiii ii ii  i  `- Re: "A diagram of C23 basic types"1David Brown
10 Apr 25 iiiii iiiiii ii ii  `- Re: "A diagram of C23 basic types"1BGB
9 Apr 25 iiiii iiiiii ii i`* Re: "A diagram of C23 basic types"3Keith Thompson
12 Apr 25 iiiii iiiiii ii i `* Re: "A diagram of C23 basic types"2Lawrence D'Oliveiro
12 Apr 25 iiiii iiiiii ii i  `- Re: "A diagram of C23 basic types"1Keith Thompson
9 Apr 25 iiiii iiiiii ii +* Re: "A diagram of C23 basic types"12Tim Rentsch
9 Apr 25 iiiii iiiiii ii i+* Re: "A diagram of C23 basic types"5Keith Thompson
14 Apr 25 iiiii iiiiii ii ii`* Re: "A diagram of C23 basic types"4Tim Rentsch
14 Apr 25 iiiii iiiiii ii ii `* Re: "A diagram of C23 basic types"3Keith Thompson
2 Feb 26 iiiii iiiiii ii ii  `* Re: "A diagram of C23 basic types"2Tim Rentsch
3 Feb 26 iiiii iiiiii ii ii   `- Re: "A diagram of C23 basic types"1Keith Thompson
10 Apr 25 iiiii iiiiii ii i`* Re: "A diagram of C23 basic types"6Michael S
14 Apr 25 iiiii iiiiii ii i `* Re: "A diagram of C23 basic types"5Tim Rentsch
14 Apr 25 iiiii iiiiii ii i  `* Re: "A diagram of C23 basic types"4Michael S
6 May 25 iiiii iiiiii ii i   `* Re: "A diagram of C23 basic types"3Tim Rentsch
6 May 25 iiiii iiiiii ii i    `* Re: "A diagram of C23 basic types"2Michael S
8 May 25 iiiii iiiiii ii i     `- Re: "A diagram of C23 basic types"1Tim Rentsch
9 Apr 25 iiiii iiiiii ii `- Re: "A diagram of C23 basic types"1Kaz Kylheku
4 Apr 25 iiiii iiiiii i`* Re: "A diagram of C23 basic types"4Waldek Hebisch
4 Apr 25 iiiii iiiiii i +* Re: "A diagram of C23 basic types"2Keith Thompson
4 Apr 25 iiiii iiiiii i i`- Re: "A diagram of C23 basic types"1Waldek Hebisch
8 Apr 25 iiiii iiiiii i `- Re: "A diagram of C23 basic types"1Lawrence D'Oliveiro
3 Apr 25 iiiii iiiiii +* Re: "A diagram of C23 basic types"2Keith Thompson
4 Apr 25 iiiii iiiiii i`- Re: "A diagram of C23 basic types"1Kaz Kylheku
4 Apr 25 iiiii iiiiii `- Re: "A diagram of C23 basic types"1Michael S
4 Apr 25 iiiii iiiii`- Re: "A diagram of C23 basic types"1Lawrence D'Oliveiro
3 Apr 25 iiiii iiii+- Re: "A diagram of C23 basic types"1Muttley
3 Apr 25 iiiii iiii`- Re: "A diagram of C23 basic types"1Keith Thompson
3 Apr 25 iiiii iii+- Re: "A diagram of C23 basic types"1David Brown
4 Apr 25 iiiii iii`- Re: "A diagram of C23 basic types"1Lawrence D'Oliveiro
3 Apr 25 iiiii ii`* Re: "A diagram of C23 basic types"3Muttley
4 Apr 25 iiiii ii `* Re: "A diagram of C23 basic types"2Muttley
4 Apr 25 iiiii ii  `- Re: "A diagram of C23 basic types"1Muttley
4 Apr 25 iiiii i`* Re: "A diagram of C23 basic types"144Lawrence D'Oliveiro
4 Apr 25 iiiii i +- Re: "A diagram of C23 basic types"1Keith Thompson
7 Apr 25 iiiii i +* Re: "A diagram of C23 basic types"89candycanearter07
7 Apr 25 iiiii i i+* Re: "A diagram of C23 basic types"87Janis Papanagnou
8 Apr 25 iiiii i ii+- Re: "A diagram of C23 basic types"1candycanearter07
14 Apr 25 iiiii i ii`* Re: "A diagram of C23 basic types"85Lawrence D'Oliveiro
14 Apr 25 iiiii i ii `* Re: "A diagram of C23 basic types"84candycanearter07
14 Apr 25 iiiii i ii  +* Re: "A diagram of C23 basic types"2Kaz Kylheku
15 Apr 25 iiiii i ii  i`- Re: "A diagram of C23 basic types"1Janis Papanagnou
14 Apr 25 iiiii i ii  `* Re: "A diagram of C23 basic types"81BGB
14 Apr 25 iiiii i ii   +- Re: "A diagram of C23 basic types"1Keith Thompson
14 Apr 25 iiiii i ii   `* Re: "A diagram of C23 basic types"79Lawrence D'Oliveiro
14 Apr 25 iiiii i ii    +* Re: "A diagram of C23 basic types"41Keith Thompson
15 Apr 25 iiiii i ii    i+* Re: "A diagram of C23 basic types"28Lawrence D'Oliveiro
15 Apr 25 iiiii i ii    ii+- Re: "A diagram of C23 basic types"1Keith Thompson
15 Apr 25 iiiii i ii    ii`* Re: "A diagram of C23 basic types"26James Kuyper
15 Apr 25 iiiii i ii    ii +* Re: "A diagram of C23 basic types"18Lawrence D'Oliveiro
15 Apr 25 iiiii i ii    ii `* Re: "A diagram of C23 basic types"7BGB
15 Apr 25 iiiii i ii    i+* Re: "A diagram of C23 basic types"10Chris M. Thomasson
29 Jul 25 iiiii i ii    i`* Re: "A diagram of C23 basic types"2dave thompson 2
15 Apr 25 iiiii i ii    `* Re: "A diagram of C23 basic types"37BGB
8 Apr 25 iiiii i i`- Re: "A diagram of C23 basic types"1Lawrence D'Oliveiro
7 Apr 25 iiiii i `* Re: "A diagram of C23 basic types"53bart
4 Apr 25 iiiii `- Re: "A diagram of C23 basic types"1Lawrence D'Oliveiro
2 Apr 25 iiii+* Re: "A diagram of C23 basic types"2Michael S
2 Apr 25 iiii`* Re: "A diagram of C23 basic types"70David Brown
2 Apr 25 iii`* Re: "A diagram of C23 basic types"3Kaz Kylheku
2 Apr 25 ii`* Re: "A diagram of C23 basic types"26Waldek Hebisch
5 Apr 25 i`* Re: "A diagram of C23 basic types"32Philipp Klaus Krause
3 Apr 25 +* Re: "A diagram of C23 basic types"46Michael S
11 Apr 25 +* Re: "A diagram of C23 basic types"2Tim Rentsch
11 Apr 25 `* Re: "A diagram of C23 basic types"2Tim Rentsch

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal