Menu
Rechercher
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
:
Dans la même rubrique :
- tutoriel rapide matlab 5
- thèse sur Borexino
- anti-spam et imap
- permutations et appel récursif
- format non trivial pour les nombres en c++
- Sommer des champs dans un fichier
- vim et ses folles astuces
- aide minimale emacs
- pointeur de fonction
- makefile et recherche de dépendances
- fork, ou comment créer des processus fils en C
- rediriger la sortie standard de Minuit
- makefile pour ferme hétérogène de calcul (tel qu’au ccin2p3)
- les énumérations en C
- publications et communications
- code ascii d’un caractère
- rapports et communications internes
- calcul d’histogramme
- test d’argument numérique entier
- calculs sur nombres flottants en shell
- créer un pdf récapitulant les logins d’une machine
- indications sur le sujet d’examen d’UNIX-1...
- lister en C le contenu d’un répertoire
- contrôle des processus fils créés par fork()
- Programme d’orchestre au tuba...
- Léopard : installation de l’OS et packages divers
- Mountain Lion : une configuration personnelle
- Soucis avec Yosemite ( MacOS 10.10 )
- CV - très vieille version