Les réponses ci-dessus sont tout à fait correct, mais je suis un lien vers David Tribble excellente page, car il donne une bonne explication sur ce et de nombreux autres problèmes.
Les points forts:
C fait la distinction entre une fonction
déclarée avec un vide de la liste des paramètres
et une fonction déclarée avec un
liste des paramètres composé de seulement
void. Le premier est une unprototyped
fonction prenant un nombre non spécifié
des arguments, tandis que le second est un
prototype de la fonction à ne pas prendre de
les arguments.
C++, d'autre part, ne fait pas de
la distinction entre les deux
les déclarations et les considère à la fois
pour signifier une fonction ne prenant aucun
les arguments.
Pour le code qui est destiné à être
compilé comme le C ou le C++, le meilleur
la solution à ce problème est de toujours
déclarer des fonctions sans paramètres
explicite nulle prototype.
Vide prototypes de fonction sont un
fonctionnalité obsolète en C99 (comme ils
ont été en C89).
Edit: Après avoir regardé la norme, c'est peut-être intéressant de noter que la touche func(void) la syntaxe est pas obsolète en C++, mais il est généralement considéré plus comme un style C idiome. Je pense que la plupart des programmeurs C++ j'ai couru à travers préfèrent le vide de la liste des paramètres.
Edit 2: Ajout d'une citation de la norme C++, section 8.3.5, paragraphe 2:
"Si le paramètre-déclaration de la clause est vide, la fonction ne prend pas d'arguments. La liste des paramètres (void) est l'équivalent de la vide de la liste des paramètres. À l'exception de ce cas particulier, nulle ne doit pas être un paramètre de type (bien que les types dérivés de vide, comme void*)."
Il n'y a aucune mention du fait que le formulaire est obsolète. Merci encore à M. Tribble l'excellent site pour m'indiquer la bonne section de la norme.