É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)) ?

  1. ALa fonction ne reste pas en mémoire pendant toute l'exécution du programme
  2. 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
  3. 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.

S'entraîner sur ce thème Retour au thème

Autres questions sur Éditeurs de liens, chargeurs et exécutables

  1. Que signifie l'écriture « extern int count; » en C ?
  2. Quelle affirmation concernant les fichiers au format ELF, courant sous Linux notamment, est correcte ?
  3. Que contient la section .text d'un exécutable ?
  4. Dans quelle section est généralement placée une variable globale écrite hors de toute fonction en C sous la forme « int limit = 100; » ?
  5. Quelle caractéristique de la section .bss est correcte ?

Comparatifs sur ce thème