Maison > développement back-end > C++ > La récursion dans Main() est-elle légalement autorisée en C ?

La récursion dans Main() est-elle légalement autorisée en C ?

DDD
Libérer: 2024-11-12 16:41:02
original
929 Les gens l'ont consulté

Is Recursion into Main() Legally Allowed in C  ?

Explorer la légalité de la récursion dans Main() en C

Un débat récurrent parmi les programmeurs est la légalité de la récursivité dans main() en C C. Alors que certaines sources suggèrent que cela est interdit, d'autres démontrent le comportement apparemment contradictoire des compilateurs acceptant un tel code.

Le point de vue du standard C

Selon le standard C en 3.6. 1/3, la récursion dans main() est explicitement interdite : "La fonction main ne doit pas être utilisée dans un programme."

Comprendre "Utilisé" dans le contexte de la norme

La norme définit "utilisé" comme : "Un objet ou une fonction non surchargée est utilisé si son nom apparaît dans une expression potentiellement évaluée."

Dans le cas de l'exemple de code présenté :

int main()
{
    main();
}
Copier après la connexion

Le L'appel à main() apparaît dans le corps de main(), qui est une expression potentiellement évaluée. Par conséquent, selon la définition de la norme, main() est utilisé dans le programme, ce qui le rend illégal.

Comportement du compilateur et exceptions potentielles

Malgré l'interdiction de la norme, les compilateurs aiment g peut compiler un tel code sans erreur. Ce comportement n’est généralement pas recommandé et ne doit pas être invoqué. Les compilateurs peuvent gérer de telles situations de manière non standard ou spécifiques à l'implémentation.

Éviter la récursion dans Main()

Pour garantir la conformité à la norme C et éviter les problèmes potentiels , il est fortement conseillé d'éviter la récursion dans main(). Envisagez plutôt d'utiliser des modèles de conception ou des techniques de programmation alternatives pour obtenir la fonctionnalité souhaitée sans enfreindre les règles du langage.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal