Comment créer des variables globales partagées en C? Si je le mets dans un fichier d'en-tête, l'éditeur de liens se plaint que les variables sont déjà définies. Est-ce que la seule façon de déclarer la variable dans l'un de mes fichiers C et de placer manuellement extern
s en haut de tous les autres fichiers C voulant l'utiliser? Cela ne semble pas idéal.
Réponses
Trop de publicités?Dans un fichier d'en-tête (shared.h):
extern int this_is_global;
Dans chaque fichier pour lequel vous souhaitez utiliser ce symbole global, incluez un en-tête contenant la déclaration externe:
#include "shared.h"
Pour éviter plusieurs définitions d’éditeur de liens, une seule déclaration de votre symbole global doit figurer dans toutes vos unités de compilation (par exemple, shared.cpp):
/* shared.cpp */
#include "shared.h"
int this_is_global;
Dans le fichier d'en-tête
En tête de fichier
#ifndef SHAREFILE_INCLUDED
#define SHAREFILE_INCLUDED
#ifdef MAIN_FILE
int global;
#else
extern int global;
#endif
#endif
Dans le fichier contenant le fichier, vous voulez que le global vive:
#define MAIN_FILE
#include "share.h"
Dans les autres fichiers nécessitant la version externe:
#include "share.h"