Portée des déclarations

Il existe en C quatre types de portées possibles pour les déclarations :
-
un identificateur déclaré à l'extérieur de toute fonction, a une portée qui s'étend de son point de déclaration jusqu'à la fin du source ;

-
un paramètre formel de fonction a une portée qui s'étend de son point de déclaration jusqu'à la fin de l'instruction composée formant le corps de la fonction ;

-
un identificateur déclaré dans une instruction composée a une portée qui s'étend du point de déclaration jusqu'à la fin de l'instruction composée ;

-
une étiquette d'instruction a une portée qui comprend tout le corps de la fonction dans laquelle elle apparaît.

Exemple :

int i; /* déclaration à l'extérieur de toute fonction */

void proc1(int j)  /* j paramètre de la procédure proc1 */
{

...                /* instructions 1 */

k:
if (...)
   {
   int l; /* déclaration à l'intérieur d'une instruction composée */

   ...    /* instructions 2                                       */
   }
}         /* fin de proc1                                         */

int func1() /* début de func1                                     */
{
...       /* instructions 3                                       */
}         /* fin de func1                                         */

Dans cet exemple,
i pourra être référencé par instructions$_1$, instructions$_2$ et instructions$_3$,
j pourra être référencé par instructions$_1$ et instructions$_2$,
k pourra être référencé par instructions$_1$ et instructions$_2$,
l pourra être référencé par instructions$_2$.



Matthieu Moy 2017-02-08