Je me souviens du temps, C++, en effet, défini variadic fonction signatues comme vous le notez. Plus tard, l'évolution rapide du langage C (sur le voyage de K&R pour la norme ANSI) a présenté des prototypes ou d' un style nouveau les déclarations de fonction qui a également déclaré des paramètres à l'intérieur des parenthèses après le nom de la fonction. Mais, avec deux différences notables: la virgule avant les points de suspension, et la nécessité pour l'abomination de la (void)
pour indiquer un paramètre vide de la liste (pour préserver la compatibilité ascendante du vide parens comme un vieux style de déclaration).
Regarder dans mes archives, je trouve Le Langage de Programmation C++ édition originale "réimprimé avec des corrections juillet 1987" montre:
l'argument de la déclaration de la liste:
arg-déclaration-listeopt ...
opt
arg-déclaration-liste:
arg-déclaration-liste ,
de l'argument de la déclaration de
l'argument de la déclaration de
Il n'y a pas de formulaire pour accepter l'option par des virgules. Notez que l'arg-déclaration de la liste d'un comma-separated et cela ne raccrochez pas à fournir une virgule après la liste et avant la prochaine (autre) chose.
C'est le moyen le plus naturel d'écrire cela. Si vous voulez une virgule, vous devez explicitement , ...
dans la première production, comme deux distincts (éventuellement des espaces séparés) jetons.
Comme C est des efforts de bonne normalisation a progressé, les compilateurs C++ ont commencé à accepter le C des versions pour permettre une utilisation facile de la norme C fichiers d'en-tête.
Pourquoi le C concepteurs d'ajouter la virgule lorsque cela implique une moins sensible grammaticales rôle des ellipses comme un faux paramètre de l'espace réservé? Je n'ai jamais trouvé.