Programmer en langage C
114
© Éditions Eyrolles
●
la classe automatique : par défaut, les variables locales entrent dans cette catégorie. Les
emplacements mémoire correspondants sont alloués à chaque entrée dans la fonction où
sont définies ces variables et ils sont libérés à chaque sortie.
En toute rigueur, il existe une classe un peu particulière, à savoir la classe registre : toute
variable entrant a priori dans la classe automatique peut être déclarée explicitement avec le
qualificatif register. Celui-ci demande au compilateur d’utiliser, dans la mesure du possible,
un registre pour y ranger la variable ; cela peut amener quelques gains de temps d’exécution.
Bien entendu, cette possibilité ne peut s’appliquer qu’aux variables scalaires.
Le cas des fonctions. La fonction est considérée par le langage C comme un objet global. C’est
ce qui permet d’ailleurs à l’éditeur de liens d’effectuer correctement son travail. Il faut noter toutefois qu’il n’est pas nécessaire d’utiliser une déclaration extern pour les fonctions définies dans un
fichier source différent de celui où elles sont appelées (mais le faire ne constitue pas une erreur).
En tant qu’objet global, la fonction peut voir sa portée limitée au fichier source dans lequel elle
est définie à l’aide d’une déclaration static comme dans :
static int fct (...)
10.3 Tableau récapitulatif
Voici un tableau récapitulant la portée et la classe d’allocation des différentes variables suivant
la nature de leur déclaration (la colonne « Type » donne le nom qu’on attribue usuellement à
de telles variables).
Type, portée et classe d’allocation des variables
Type de variable
Déclaration
Portée
Classe d’allocation
Globale
en dehors de toute
fonction
• la partie du fichier source
suivant sa déclaration,
• n’importe quel fichier
source, avec extern.
Statique
Globale cachée
en dehors de toute
fonction, avec l’attribut
static
uniquement la partie du
fichier source suivant sa
déclaration
Locale
« rémanente »
au début d’une fonction,
avec l’attribut static
la fonction
Locale à une fonction
au début d’une fonction
la fonction
Automatique
Locale à un bloc
au début d’un bloc
le bloc
Delannoy Livre.book Page 114 Mercredi, 6. mai 2009 4:26 16
114
© Éditions Eyrolles
●
la classe automatique : par défaut, les variables locales entrent dans cette catégorie. Les
emplacements mémoire correspondants sont alloués à chaque entrée dans la fonction où
sont définies ces variables et ils sont libérés à chaque sortie.
En toute rigueur, il existe une classe un peu particulière, à savoir la classe registre : toute
variable entrant a priori dans la classe automatique peut être déclarée explicitement avec le
qualificatif register. Celui-ci demande au compilateur d’utiliser, dans la mesure du possible,
un registre pour y ranger la variable ; cela peut amener quelques gains de temps d’exécution.
Bien entendu, cette possibilité ne peut s’appliquer qu’aux variables scalaires.
Le cas des fonctions. La fonction est considérée par le langage C comme un objet global. C’est
ce qui permet d’ailleurs à l’éditeur de liens d’effectuer correctement son travail. Il faut noter toutefois qu’il n’est pas nécessaire d’utiliser une déclaration extern pour les fonctions définies dans un
fichier source différent de celui où elles sont appelées (mais le faire ne constitue pas une erreur).
En tant qu’objet global, la fonction peut voir sa portée limitée au fichier source dans lequel elle
est définie à l’aide d’une déclaration static comme dans :
static int fct (...)
10.3 Tableau récapitulatif
Voici un tableau récapitulant la portée et la classe d’allocation des différentes variables suivant
la nature de leur déclaration (la colonne « Type » donne le nom qu’on attribue usuellement à
de telles variables).
Type, portée et classe d’allocation des variables
Type de variable
Déclaration
Portée
Classe d’allocation
Globale
en dehors de toute
fonction
• la partie du fichier source
suivant sa déclaration,
• n’importe quel fichier
source, avec extern.
Statique
Globale cachée
en dehors de toute
fonction, avec l’attribut
static
uniquement la partie du
fichier source suivant sa
déclaration
Locale
« rémanente »
au début d’une fonction,
avec l’attribut static
la fonction
Locale à une fonction
au début d’une fonction
la fonction
Automatique
Locale à un bloc
au début d’un bloc
le bloc
Delannoy Livre.book Page 114 Mercredi, 6. mai 2009 4:26 16
