10.3. Conséquence sur les variables globales : la déclaration extern

Icône de l'outil pédagogique Conséquence sur les variables globales : la déclaration extern

 

Rappelons que l’usage des variables globales est soumis à de strictes limitations. Voir paragraphe 9.6.2..

Une variable globale est accessible par toutes les fonctions écrites en‐dessous de sa définition dans le même fichier source. Mais une fonction écrite dans un autre fichier ne peut pas se servir de cette variable globale... C'est pourtant indispensable si on désire diviser le programme en plusieurs fichiers sources qui se partagent des variables globales.

Pour résoudre ce problème, le Langage C prévoit une déclaration qui précise que la variable globale est définie dans un autre fichier. C'est la déclaration extern, dont la syntaxe est :

extern type nom_var ; /* à placer au sommet du fichier utilisateur ou dans un fichier en‐tête*/

Cette déclaration indique au compilateur qu'il ne s'agit pas d'une nouvelle variable et qu'il ne doit pas réserver de place en mémoire. La déclaration extern fournit le type de la variable et précise qu'elle est déjà définie ailleurs. L'éditeur de liens la trouvera à condition qu'elle ait été définie en variable globale dans un, et un seul, des fichiers à lier : celui où se trouve main, de préférence (règle de style).

Attention : il n'est pas question d'initialiser la variable globale dans cette déclaration extern.