C++ 11 N3337 projet de norme
Il n'y a pas de différence.
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3337.pdf
Annexe C "Compatibilité" C.1.7 L'article 8: déclarateurs dit:
8.3.5 Changement: C++, une fonction déclarée avec une liste de paramètres vide ne prend aucun argument. En C, une liste vide de paramètres signifie que le nombre et le type des arguments de la fonction sont inconnus.
Exemple:
int f();
// means int f(void) in C++
// int f(unknown) in C
Justification: Cela permet d'éviter les appels de fonction erronés (par exemple, la fonction appelle le mauvais numéro ou le type de arguments).
Effet sur la fonction d'origine: passage à la sémantique d'une entité bien définie. Cette fonction a été marquée comme « obsolescents » dans C.
8.5.3 fonctions dit:
4. Le paramètre-déclaration article détermine les arguments qui peuvent être spécifiées et leur traitement , lorsque la fonction est appelée. [...] Si la clause parameter-declaration-clause est vide, la fonction ne prend aucun argument. La liste des paramètres (void) est équivalente à la liste des paramètres vides.
C99
Comme mentionné par 11 C++, int f()
spécifie rien sur les arguments, et est obsolescent.
Il peut soit conduire au code de travail ou UB.
avoir interprété la norme C99 en détail: https://stackoverflow.com/a/36292431/895245
Mais si C++ avait demandé le 'void', alors il aurait pu éviter le problème de" l'analyse la plus vexante ". –
Certes, mais il y a tellement d'autres paresseuses en C++, il n'y a pas vraiment de raison de kvetching à propos de l'une d'entre elles. – DrPizza
Sur une question récente, @James Kanze a posté un article intéressant. Repost ici pour éviter de le perdre: les premières versions de C ne permettaient pas de spécifier le nombre de paramètres qu'une fonction pouvait prendre, ainsi 'void foo()' était la seule syntaxe à déclarer une fonction. Lorsque les signatures ont été introduites, le comité C a dû désambiguïser le non-paramètre de l'ancienne syntaxe, et a introduit la syntaxe 'void foo (void)'. C++ l'a pris pour des raisons de compatibilité. –