next up previous
Next: Les bibliothèques standards Up: Initiation au langage C Previous: Les fonctions

Sous-sections

Structure d'un programme C

  Un programme C est une suite de définitions et/ou de déclarations.

  On appelle déclaration le fait d'informer le compilateur qu'un objet existe et de lui associer un nom.

  On appelle définition le fait de demander au compilateur de créer un objet et de lui associer un nom. Une définition est aussi, de fait, une déclaration. En général, une définition réserve de l'espace en mémoire pour stocker l'objet défini.

Un même objet peut en général être déclaré plusieurs fois mais, par contre, il doit être défini une fois et une seule. Toute les déclarations et la définition d'un même objet doivent être identiques (les déclarations et la définition traitent du même objet si elles utilisent le même nom).

Attention : selon les ouvrages et auteurs, les notions de définition et de déclaration peuvent être inversées ! Si vous employez ces notions dans un document, pensez à préciser au lecteur dans quel sens vous les utilisez et surtout restez cohérent tout au long de votre texte.

déclaration de types

  Les types ne sont jamais définis (puisqu'ils ne réservent pas d'espace en mémoire). Par contre un même type (struct ou typedef ) ne doit être déclaré qu'une fois par fichier source.

déclaration de fonctions

  Nous avons déjà vu comment définir une fonction. Pour la déclarer, il suffit d'écrire le type de la fonction suivi de son nom et de la liste de ses paramètres sans mettre le corps de la fonction elle-même et en terminant la déclaration par un point-virgule. La ligne suivante déclare la fonction moyenne :

double moyenne(double a, double b);

À partir du moment où cette déclaration est faite, la fonction moyenne est utilisable. Sa définition peut apparaître plus tard ou même dans un autre fichier source.

déclaration de variables

    Nous avons déjà vu comment définir des variables. Pour faire juste une déclaration d'une variable qui sera définie plus tard ou dans un autre fichier source, il faut précéder la définition du mot-clé extern. Ainsi, les deux lignes suivantes déclarent que a et b existent sans leur réserver d'espace en mémoire :

extern char a[100];
extern double *b;

À partir du moment où ces déclarations sont faites, le compilateur peut utiliser a et b puisqu'il connaît leur type.

notion de portée d'un nom

La norme définit une notion de portée d'un nom. La portée d'un nom représente la région (ou les régions) dans le programme source où un nom est connu du compilateur.

  Les fonctions définies dans un fichier source C sont visibles (et donc utilisables) dans tout le programme sauf si leur définition est précédée du mot-clé static. Dans ce dernier cas, la fonction n'est visible que dans le fichier source la contenant.

Les variables définies à l'intérieur d'un bloc (au début le corps d'une fonction par exemple ou plus généralement au début d'une série d'instructions entourée par des accolades) ne sont visibles qu'à l'intérieur de ce bloc. À l'extérieur de ce bloc, le nom peut être réutilisé pour un autre objet.

Les variables définies à l'extérieur de toutes les fonctions (et donc à l'extérieur de tous les blocs) sont appelées des variables globales. Elles sont visibles dans tout le programme sauf si leur définition est précédée du mot-clé static. Dans ce cas, la variable n'est utilisable que dans le fichier source la contenant.


next up previous
Next: Les bibliothèques standards Up: Initiation au langage C Previous: Les fonctions

Copyright © EMAC - 1997 - Paul GABORIT