C ne prend pas en charge la surcharge de fonctions. Comment pouvons-nous alors avoir 3 prototypes pour principal? Quelle est la raison historique pour avoir 3 prototypes?Pourquoi avons-nous plusieurs déclarations pour main en C?
Répondre
Il existe seulement deux prototypes pour main
qu'une implémentation C conforme à la norme est requise pour reconnaître: int main(void)
et int main(int, char *[])
. Cela ne surcharge pas, car il ne peut y avoir qu'un seul main
par programme; avoir un void foo(int, double)
dans un programme et un char *foo(FILE *)
dans un autre ne surcharge pas non plus.
La raison d'être des deux prototypes est la commodité: certaines applications veulent des arguments de ligne de commande, tandis que d'autres ne s'en soucient pas.
Tous les autres prototypes, tels que void main(void)
et int main(int, char *[], char *[])
, sont des extensions dépendant du compilateur/plateforme.
Il n'y a que deux formes _canonical_ de 'main' et la seconde a aussi le texte" ou équivalent "(donc' char ** 'est correct). En outre, la norme autorise aussi explicitement les autres - elle ne les mandate pas. – paxdiablo
@paxdiablo: J'ai décidé de ne pas déranger avec des formes équivalentes car elles sont déjà traitées par d'autres règles de la norme. Merci pour l'autre remarque, ajouté "requis" à la réponse. –
Cela répond seulement comment cela fonctionne sur un système hébergé. Pour une réponse complète, consultez ce lien: http://stackoverflow.com/questions/5296163/why-is-the-type-of-the-main-function-in-c-and-c-left-to-the- utilisateur-à-définir/5296593 # 5296593 – Lundin
- 1. C#: un attribut pour plusieurs déclarations (DLLImport)
- 2. Besoin d'aide pour les déclarations en C
- 3. Déclarations Switch/Case en C++
- 4. C++ classe pourquoi besoin de main?
- 5. Déclarations en C++
- 6. Déclaration déclarations en C
- 7. si les déclarations pour C++
- 8. C plusieurs déclarations de ligne unique
- 9. combiner plusieurs déclarations si
- 10. Pourquoi int main() {} compile?
- 11. Java déclarations statiques en C#
- 12. Que sont les déclarations directes en C++?
- 13. Combien d'arguments a main() en C/C++
- 14. Compilation avec plusieurs main() s
- 15. Comment emballer plusieurs déclarations
- 16. Déclarations, définitions, initialisations en C, C++, C#, Java et Python
- 17. Combiner plusieurs déclarations MySQL en un seul
- 18. Besoin d'aide pour plusieurs déclarations foreach en php
- 19. Si C++ est rétrocompatible avec C, pourquoi void main est-il illégal en C++?
- 20. déclarations d'affectation de tableau juridiques en C
- 21. Pourquoi le C++ n'a pas de double départ main() ou similaire et seulement int/void main()?
- 22. Point d'entrée C++ -> main()
- 23. Déclarations de fonctions externes DLL en C#
- 24. VS Fenêtre immédiate pour les déclarations C++
- 25. Ajouter plusieurs déclarations à XDocument
- 26. Confusion sur les déclarations inline en C
- 27. Déclarations C avant utilisation
- 28. Initialisation d'un vecteur avant main() en C++
- 29. Fonctions d'appel de main() en C++
- 30. déclarations RegExp pour deux scénarios en javascript
La réponse à votre question peut être trouvée ici: http://stackoverflow.com/questions/5296163/why-is-the-type-of-the-main-function-in-c-and-c-left -to-the-user-to-define/5296593 # 5296593 – Lundin