Bonjour,
Voici mon problême :
Mon programme possède un main et 3 modules : main.cpp, m1.cpp, m2.cpp, m3.cpp
main.cpp inclut m1.h, m2.h et m3.h
Chacun de ces modules contient la définition de fonctions appellées par le main.
J'ai besoin de déclarer des variables qui soient visibles par les 3 modules, mais pas par le main.
m1 possède une fonction qui lit un fichier config et initialise les variables.
m2 et m3 les utilise une fois initialisées.
J'ai commencé par créer un fichier var.h, contenant la déclaration des variables :
ex: char toto[30];
Lors de la compilation, j'ai une redéfintition.
J'ai donc ajouté :
#ifndef VARIABLE_H
#define VARIABLE_H
char toto[30];
#endif
Lors de la compilation je n'ai plus de redéfinition, mais j'en ai une lors de l'édition de lien, me disant que la variable est déclarée dans les 3 modules, donc redéfinition.
J'ai donc modifié en :
#ifndef VARIABLE_H
#define VARIABLE_H
static char toto[30];
#endif
Je n'ai plus de redéfinition, pas d'erreur, pas de warning
Main appelle la fonction qui lit le fichier config et initialise correctement les variables.
Lorsque je débug et que je pose un breakpoint juste avant l'accolade de la fin de la fonction readconfig, je vois les variables initialisées.
Lorsque je sors de la fonction, je me retrouve avec mes variables vides.

Pouvez vous m'expliquer ou était mon problême (sachant que je l'ai résolu avec des "extern char"
) ?