Liste des Groupes | Revenir à cl c |
Michael S <already5chosen@yahoo.com> writes:
On Fri, 4 Apr 2025 02:57:10 -0000 (UTC)
Lawrence D'Oliveiro <ldo@nz.invalid> 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.
Les messages affichés proviennent d'usenet.