Éditeurs de liens, chargeurs et exécutables
Quel est l'effet de la définition d'une fonction avec static en C (par exemple static int helper(void)) ?
- ALa fonction ne reste pas en mémoire pendant toute l'exécution du programme
- BLa fonction n'est visible que dans le fichier, et n'entre pas en conflit avec une fonction de même nom dans un autre fichier
- CLa fonction est exécutée avant toutes les autres
Afficher la réponse et l'explication
Réponse : B. La fonction n'est visible que dans le fichier, et n'entre pas en conflit avec une fonction de même nom dans un autre fichier
Ajouter static à une fonction ou une variable globale lui donne une liaison interne : le symbole n'est utilisé que dans ce fichier et ne peut être référencé depuis d'autres fichiers. Outre la prévention des conflits de noms, le compilateur, sachant que la fonction n'est pas appelée ailleurs, peut plus facilement l'optimiser, par exemple par expansion en ligne ou suppression des fonctions inutilisées.
Continuer : 9 autres questions sur Éditeurs de liens, chargeurs et exécutables