déclaration

En C, on peut déclarer/définir les entités suivantes :

Les entités déclarées dans un bloc ou une fonction sont dites locales à ce bloc.

Dans le cas des fonctions, on distingue souvent la déclaration (nom, liste des paramètres et types de résultats) de la définition (la fonction est complètement définie). Cette séparation est obligatoire dans le cas de récursivité croisée. Elles est également présente en cas de compilation croisée.

Quelques règles et notions liées

Déclaration avant toute utilisation.

Cette première règle précise que les variables et les fonctions doivent être déclarées avant toute utilisation comme dans l'exemple suivant pour les variables :

main () {

int var1 ;

float x ;

char car ;

var1 = 5 ;

x = 3.9 ;

car = 'a' ;

printf ("var1 =  %d x =%f car =0c \n", var1, x, car) ;

}

L'exécution de ce programme donne :

var1 = 5 x = 3.9 car = a  

Notion de variable locale à un bloc.

La seconde règle précise que, dans l'exemple précédent, les variables var1, x et car n'existe plus après }. Ces variables sont locales à la fonction main. On peut déclarer des varaiables dans n'importe quel bloc. Leur portée est limitée à la fonction main. Les paramètres formels d'une fonction sont locaux à la fonction.

Où placer les déclarations dans un bloc?

Avant C99, on ne pouvait déclarer de variables qu'en tête de bloc. Avec C99, une variable peut être déclarée n'importe où avant ses utilisations.

Masquage d'une déclaration

On peut, dans un bloc, déclarer une entité de même nom qu'une variable déclarée dans un bloc englobant ou qu'une variable globale (c'est à dire une variable déclarée en dehors de toute fonction). La première déclration masque la seconde dans toute la portée de la première.

Portée des entités (variables, constantes, fonctions gloables).

Une variable globale ou une constante  globale, c'est à dire une variable déclarée en dehors de toute fonction, peut être utilisée dans les fonctions qui suivent sa déclaration dans le même fichier.

Elle peut même être visible, dans certains cas, dans des fichiers compilés séparément (cf Chap. 6.2).

Pas de fonctions déclarées dans une autre fonction

En C, contrairement à Pascal, on ne peut pas déclarer de fonctions à l'intérieur de fonction (décomposition descendante en Pascal).

» Glossaire du langage C