Im Anschluss an einer alten Frage von mir (Is there any relevance to an extra "," in the end of a brace initialization?)Warum ist ein zusätzliches Komma in einer Parameterliste nicht erlaubt, wenn es in einer Klammerinitialisierung zulässig ist?
Gibt es technische Gründe, warum die Parameterliste in Funktionsdeklarationen und Funktionsaufrufen ist wie die Klammer Initialisierung nicht aus Code-Generation freundlich?
Was ich meine ist:
Das ist in Ordnung, die zusätzlichen ,
wird ignoriert:
int generated_array[] = {
1,
2,
3,
};
Aus Gründen der Einheitlichkeit würde es nicht auch Sinn machen, um dies zu ermöglichen?
int someFunc(
int v1,
int v2,
int v3,
){...}
int ret_val = someFunc(
1,
2,
3,
);
Ich kann nicht sehen, wie es Kompilierung komplizierter machen würde, aber vielleicht gibt es etwas, an das ich nicht denke. Ich würde vermuten, es würde es tatsächlich ein wenig vereinfachen.
Natürlich kann man argumentieren, dass es nicht so nützlich wie die Klammerinitialisierung ist, aber es sollte Fälle geben, in denen die Codeerzeugung zumindest ein kleines bisschen einfacher wäre, wenn dies erlaubt wäre.
** Syntaxregel! ** – haccks
Die Argumentation für nachgestellte Kommas in Initialisierungslisten dient der einfachen maschinellen Generierung großer statischer Arrays. Es gibt jedoch keine praktische Notwendigkeit, große Funktionsparameterlisten maschinell zu erzeugen. –
Sobald wir dorthin gehen, müssen wir 'int a, b = 1, c = 6,;' aus Gründen der Konsistenz zulassen. – cleong