Récursivité dans main() en C : Légale ou pas ?
Une idée fausse courante concernant C est la légalité de la récursion dans le main( ) fonction. Bien qu'il puisse sembler intuitif qu'une telle pratique soit interdite, le compilateur ne s'oppose souvent pas à un tel code. Pour clarifier ce problème, approfondissons les subtilités du standard C.
Selon le standard C (3.6.1/3), la récursion dans main() n'est pas autorisée. La norme indique explicitement que « la fonction main ne doit pas être utilisée dans un programme ». Dans ce contexte, « utilisé » implique que la fonction est référencée dans une expression potentiellement évaluée.
Par conséquent, le code suivant est en violation de la norme C :
int main() { main(); }
Malgré cela interdiction, certains compilateurs peuvent ne pas émettre d'erreur lorsqu'ils rencontrent un tel code. Cela peut amener les développeurs à croire que la récursion dans main() est légale, mais il est important de noter que ce comportement est erroné. Le recours à l'acceptation du compilateur ne doit pas remplacer l'adhésion à la norme.
En conclusion, selon la norme C, la récursion dans main() est illégale. Bien que les compilateurs n'appliquent pas toujours cette règle, les développeurs doivent être conscients des exigences de la norme et éviter cette pratique dans leur code.
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!