Partenaires

CNRS
IN2P3
Sorbonne Universite
Universite de Paris
Initiative Physique des Infinis
UPMC


Rechercher

Sur ce site


Accueil > Le LPNHE > Pages du personnel permanent > Beau Tristan > Divers > Vielleries > variables globales (extern) et commandes du préprocesseur

variables globales (extern) et commandes du préprocesseur

4 octobre 2006

par Tristan Beau - 7 juin 2017

On recommande souvent de ne pas utiliser de variables globales en C (dans les autres langages non plus) ; il est en effet préférable de s’en abstenir le plus souvent.
Cependant, notamment lors d’une programmation utilisant de la mémoire partagée entre processus, ou bien des threads, on est souvent amené à utiliser ce mécanisme.

Si le projet contient plusieurs fichiers sources, l’un d’eux doit définir une variable qui deviendra globale (e.g. int x), tandis que les autres la référenceront via le mot clef extern. Or il est assez pénible de devoir expliciter ces variables externes dans tous les fichiers sources.

Pour optimiser la syntaxe, nous proposons ici de créer un fichier include assurant la correcte définition de telles variables. Appelons ext_var.h un tel fichier. Il contiendra :

Il suffit ensuite dans une des sources de définir la variable _MAIN_ (e.g. dans le main()justement), et d’inclure dans tous les fichiers sources ce ext_var.h. Par exemple, si notre projet contient ext_var.h, ext_main.c, ext_fct1.c, ext_fct2.c et ext_fcts.h, nous aurons :

  • dans ext_main.c
  • dans ext_fcts.h
  • dans ext_fct1.c
  • dans ext_fct2.c

Si nous souhaitons directement initialiser la variable x, on pourra modifier ainsi ext_var.h :

Facebook
Enregistrer au format PDF