Récursion dans main() en C : est-ce autorisé ?
Malgré l'idée selon laquelle C interdit la récursion dans main(), il existe sont des cas où du code comme celui-ci se compile sans erreur en utilisant g :
int main() { main(); }
Cela soulève la question : le standard C autorise-t-il un tel récursion ?
Réponse :
Le standard C interdit explicitement la récursivité dans main() dans la section 3.6.1/3, qui stipule que "La fonction main ne doit pas être utilisé dans un programme." Dans ce contexte, « utilisé » fait référence aux situations où « son nom apparaît dans une expression potentiellement évaluée ».
Par conséquent, les appels récursifs à main() ne sont pas autorisés dans les programmes C. La capacité du compilateur à compiler le code fourni sans erreur est probablement due à ses optimisations spécifiques à l'implémentation ou à une faille dans son interprétation de la norme. Cependant, il n'est pas recommandé de s'appuyer sur un tel comportement car il va à l'encontre de l'interdiction explicite de la spécification 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!