Éditeurs de liens, chargeurs et exécutables

Que signifie l'écriture « extern int count; » en C ?

  1. AElle déclare que la variable count est définie ailleurs, sans réserver d'espace ici
  2. BElle crée une nouvelle variable count initialisée à 0
  3. CElle rend la variable count invisible hors de ce fichier
Afficher la réponse et l'explication

Réponse : A. Elle déclare que la variable count est définie ailleurs, sans réserver d'espace ici

extern est une déclaration indiquant que « la variable de ce nom est définie ailleurs, dans un autre fichier par exemple » ; aucune zone mémoire n'est réservée. Le compilateur produit des instructions référençant count sans connaître son adresse et enregistre leur emplacement dans les informations de relocalisation. L'éditeur de liens les associe à la définition située dans un autre fichier, comme « int count = 0; », et fixe l'adresse. La règle de base est d'écrire la déclaration extern dans un fichier d'en-tête et de placer la définition dans un seul fichier source.

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

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

  1. Quelle affirmation concernant les fichiers au format ELF, courant sous Linux notamment, est correcte ?
  2. Que contient la section .text d'un exécutable ?
  3. 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; » ?
  4. Quelle caractéristique de la section .bss est correcte ?
  5. L'exécution de « char *p = "hello"; p[0] = 'H'; » en C provoque une terminaison anormale dans de nombreux environnements. Quelle en est la raison ?

Comparatifs sur ce thème