Path: news.eternal-september.org!eternal-september.org!.POSTED!not-for-mail From: Tim Rentsch Newsgroups: comp.lang.c Subject: Re: "A diagram of C23 basic types" Date: Wed, 09 Apr 2025 13:14:55 -0700 Organization: A noiseless patient Spider Lines: 58 Message-ID: <861pu1ccsg.fsf@linuxsc.com> References: <87y0wjaysg.fsf@gmail.com> <20250402220614.431@kylheku.com> <85mscxlqnb.fsf@nosuchdomain.example.com> <20250403121946.134@kylheku.com> <20250409124900.00000fa1@yahoo.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Injection-Date: Wed, 09 Apr 2025 22:14:56 +0200 (CEST) Injection-Info: dont-email.me; posting-host="b047b0586914e6e160c0016b929ac37f"; logging-data="1407645"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1/KgunWAf9U6MNQwheac12ri58US6lW0ho=" User-Agent: Gnus/5.11 (Gnus v5.11) Emacs/22.4 (gnu/linux) Cancel-Lock: sha1:1hsQxjuILR/vFaWE5mfAL0JdGhc= sha1:BYuTo0YcNnDvZasMPnRy7u5SZtI= Michael S writes: > On Fri, 4 Apr 2025 02:57:10 -0000 (UTC) > Lawrence D'Oliveiro wrote: > >> On Thu, 3 Apr 2025 21:48:40 +0100, bart wrote: >> >>> Commas are overwhelmingly used to separate list elements in >>> programming languages. >> >> Not just separate, but terminate. > > I disagree. I am in favor of optional trailing commas rather than > mandatory ones. > >> All the reasonable languages allow >> trailing commas. > > Are your sure that C Standard does not allow trailing commas? > That is, they are obviously legal in initializer lists. > All compilers that I tried reject trailing comma in function calls. > > For example > > void bar(int); > void foo(void) { > bar(1,); > } > > MSVC: > comma.c(3): error C2059: syntax error: ')' > > clang: > comma.c:3:9: error: expected expression > 3 | bar(1,); > | ^ > > gcc: > comma.c: In function 'foo': > comma.c:3:9: error: expected expression before ')' token > 3 | bar(1,); > | ^ > comma.c:3:3: error: too many arguments to function 'bar' > 3 | bar(1,); > | ^~~ > comma.c:1:6: note: declared here > 1 | void bar(int); > | ^~~ > > But is it (rejection) really required by the Standard? I don't know. It is required in the sense that it is a syntax error, and syntax errors require a diagnostic. 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.