int main () vs void main() en C [dupliquer]
cette question a déjà une réponse ici:
En C, je sais que int main() retourne un int, où void main() ne fonctionne pas. Autre que cela, est-il une différence entre eux? la première est meilleure que la seconde?
3 réponses
la grande majorité du temps, l'un des int main(void)
ou int main(int argc, char* argv[])
est ce que vous devez utiliser. En particulier, si vous écrivez un programme qui va être compilé par n'importe quel compilateur majeur pour fonctionner sur un ordinateur personnel, avec l'ensemble complet des bibliothèques C standard, alors vous avez presque certainement besoin de retourner un int
de main
.
(je voudrais aussi éviter d'utiliser un argument vide de la liste, voir " Pourquoi n'utilisons-nous pas (void) principal? ")
la norme C99 permet d'autres signatures définies par implémentation, et vous pouvez les utiliser si vous avez lu le manuel de votre compilateur et qu'il dit que vous le pouvez.
(5.1.2.2.1) il doit être défini avec un type de retour int et sans paramètres ... ou avec deux paramètres ... ou d'une autre manière définie par la mise en œuvre
personnellement, je les éviterais même s'ils sont permis (si possible), parce que c'est une chose de plus à se soucier si vous avez besoin de porter à un autre système.
voir les commentaires ci-dessous " pourquoi n'utilisons-nous pas (nul) dans main? ", pour une discussion intéressante sur ce sujet.
si votre livre dit void main()
il est soit très très périmé, a été écrit par un idiot (ou les deux)
edit: OK sauf si vous êtes dans un système très improbable où vous avez un main autoportant - voir pourquoi le type de la fonction principale en C et c++ est laissé à l'utilisateur pour définir?
void main()
n'est pas valide C. int main()
est. C'est la principale différence.