Warum ist das Komma in C ++ variadic Funktionsdeklarationen optional?

8

Gibt es einen Unterschied in diesen beiden Erklärungen?

%Vor%

und

%Vor%

Wenn es keinen Unterschied gibt, welchen Sinn hat es, die zweite syntaktisch gültig zu machen?

    
William Pursell 25.11.2011, 21:54
quelle

1 Antwort

2

Dies ist Spekulation, aber in C ++ kann es sinnvoll sein, eine Funktion ohne andere Parameter zu haben, z. void f(...) , während in C eine Funktion wie diese keine Verwendung hat (die ich kenne), also muss ... einem anderen Parameter und daher einem Komma folgen.

Aus der Sicht der Grammatik ist es einfacher, void f( int a ... ) einfach zuzulassen und ihm die offensichtliche Bedeutung zu geben, als es zu verhindern, und es wird keine große Belastung für Compiler-Schreiber oder Verwirrung für Programmierer bedeuten / p>

(Ich dachte ursprünglich, es könnte etwas damit zu tun haben, die Grammatik für Parameterpakete regelmäßiger zu machen, aber ich entdeckte, dass es in C ++ 03 auf jeden Fall explizit erlaubt war.)

    
Charles Bailey 25.11.2011, 22:11
quelle

Tags und Links