© Éditions Eyrolles
111
chapitre n° 6
La programmation modulaire et les fonctions
paragraphe suivant, nous serons alors en mesure de faire le point sur les différentes classes
d’allocation des variables.
Notez que, à partir du moment où l’on parle de compilation séparée, il existe au moins (ou il
a existé) deux programmes source ; dans la suite, nous supposerons qu’ils figurent dans des
fichiers, de sorte que nous parlerons toujours de fichier source.
Pour l’instant, voyons l’incidence de cette compilation séparée sur la portée des variables globales.
9.1 La portée d’une variable globale - la déclaration extern
A priori, la portée d’une variable globale semble limitée au fichier source dans lequel elle a été
définie. Ainsi, supposez que l’on compile séparément ces deux fichiers source :
source 1
source 2
int x ;
fct2()
main()
{
{
.....
.....
}
}
fct3()
fct1()
{
{
.....
.....
}
}
Il ne semble pas possible, dans les fonctions fct2 et fct3 de faire référence à la variable
globale x déclarée dans le premier fichier source (alors qu’aucun problème ne se poserait si
l’on réunissait ces deux fichiers source en un seul, du moins si l’on prenait soin de placer
les instructions du second fichier à la suite de celles du premier).
En fait, le langage C prévoit une déclaration permettant de spécifier qu’une variable globale a
déjà été définie dans un autre fichier source. Celle-ci se fait à l’aide du mot-clé extern. Ainsi,
en faisant précéder notre second fichier source de la déclaration :
extern int x ;
il devient possible de mentionner la variable globale x (déclarée dans le premier fichier
source) dans les fonctions fct2 et fct3.
Cette déclaration extern n’effectue pas de réservation d’emplacement de variable. Elle ne
fait que préciser que la variable globale x est définie par ailleurs et elle en précise le type.
Nous n’avons considéré ici que la façon la plus usuelle de gérer des variables globales (celle-ci
est utilisable avec tous les compilateurs, qu’ils soient d’avant ou d’après la norme). La norme
prévoit d’autres possibilités, au demeurant fort peu répandues et, de surcroît, peu logiques
(doubles déclarations, mot extern utilisé même pour la réservation d’un emplacement, définitions potentielles).
Delannoy Livre.book Page 111 Mercredi, 6. mai 2009 4:26 16
Précédent

- 124/281

Suivant