Maison >développement back-end >C++ >`main()` est-il vraiment le premier code exécuté dans un programme C ?

`main()` est-il vraiment le premier code exécuté dans un programme C ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-07 05:33:15854parcourir

Is `main()` Really the First Code Executed in a C   Program?

Main() est-il vraiment l'initiation d'un programme C ?

La norme C définit main() comme le point de départ exclusif d'un program : "Un programme doit contenir une fonction globale appelée main, qui est le début désigné du programme."

Cependant, le code ci-dessous semble contredire cela définition :

int square(int i) { return i*i; }
int user_main()
{ 
    for ( int i = 0 ; i < 10 ; ++i )
           std::cout << square(i) << endl;
    return 0;
}
int main_ret= user_main();
int main() 
{
        return main_ret;
}

Étonnamment, ce code exécute la fonction user_main() avant d'entrer main(), qui est censé être le point d'exécution initial. De plus, le code se compile sans erreurs ni avertissements.

Définir le « démarrage » d'un programme

Il est crucial d'interpréter correctement le terme « démarrage du programme ». La norme définit le début comme le point où le programme est considéré comme commençant, pas nécessairement lorsque le premier code s'exécute.

Dans cet exemple, le programme commence par main(), mais cela n'implique pas qu'aucun code s'exécute au préalable. En réalité, un code substantiel est généralement exécuté avant main(), en particulier lors de l'initialisation.

Conformité aux normes

Malgré l'ordre d'exécution inhabituel du code, il adhère pleinement aux Standard. Selon la définition, le début du programme est main(), même si user_main() s'exécute plus tôt. L'ordre d'exécution ne change rien au fait que le début du programme est défini comme la fonction main().

Par conséquent, le code donné est conforme au Standard et n'invalide pas la définition du début de le programme comme main().

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!

Déclaration:
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