Éditeurs de liens, chargeurs et exécutables
La même fonction globale void init(void), sans static, est définie à la fois dans a.c et b.c, puis on effectue l'édition de liens. Que se passe-t-il ?
- ACelle liée en dernier est utilisée automatiquement, sans erreur
- BUne erreur survient à l'édition de liens, le même symbole étant défini deux fois
- CLes deux fonctions sont automatiquement fusionnées et leurs traitements exécutés successivement
Afficher la réponse et l'explication
Réponse : B. Une erreur survient à l'édition de liens, le même symbole étant défini deux fois
Une fonction globale sans static partage un nom unique dans tout le programme. Avec deux définitions du même nom, l'éditeur de liens ne peut décider à laquelle associer les références, d'où une erreur de définition multiple (multiple definition). Pour une fonction utilisée uniquement dans le fichier, il suffit d'ajouter static pour la rendre invisible de l'extérieur ; elle n'entrera alors pas en conflit avec un homonyme dans un autre fichier.
Continuer : 9 autres questions sur Éditeurs de liens, chargeurs et exécutables