Variable globale [Resolu] - C - Programmation
Marsh Posté le 19-09-2007 à 13:27:59
C'est ce que je disais dans mon message précédent. Si j'utilise le mot clé extern j'ai l'erreur : warning: `Toto' initialized and declared `extern'
Marsh Posté le 19-09-2007 à 13:38:27
Edgar_Perry a écrit : je souhaiterais déclarer dans un .h une varibale du type : char * Toto[3]={"A","B","C"} et l'utiliser dans deux fichier fic1 et fic2 qui incluent tout les deux mon .h. Mon problème c'est qu'à la compilation il me jette en me disant : multiple definition of 'Toto' J'ai essayé de déclaré la variable en extern mais il n'a pas l'air d'aimer l'initialisation. |
Les globales, çaÿ mal...
http://mapage.noos.fr/emdel/notes.htm#globales
Si ça ne marche pas, montre ton code.
Marsh Posté le 19-09-2007 à 14:01:57
Je sais que c'est mal mais j'ai un tableau avec un contenu fixe que je veux utiliser dans plusieurs sources et je voulais éviter de déclarer x fois ce tableau.
J'ai lu le lien et je suis arrivé à compiler en faisant ça :
toto.h
/*Declaration de la varible*/
char * Toto[3];
Fic1.c
#include "Toto.h"
/*Initialisation*/
char *Toto[3]= {"A","B","C"};
Ficn.c
#include "Toto.h"
extern char * Toto[3];
Est-ce que c'est bon ?
Marsh Posté le 19-09-2007 à 14:20:54
Edgar_Perry a écrit : Je sais que c'est mal mais j'ai un tableau avec un contenu fixe que je veux utiliser dans plusieurs sources et je voulais éviter de déclarer x fois ce tableau. |
Non (voir différence entre "déclaration" et "définition" )
Là où ton tableau est créé (fic1.c), tu le définis et tu l'initialises
Là où ton tableau est utilisé (partout ailleurs) tu le déclares juste en extern. A la limite tu le mets en extern dans le .h et tu inclus ce .h partout où t'en as besoin...
Marsh Posté le 19-09-2007 à 14:25:51
Rhaaaaa punaise je tourne en rond. Et l'initialisation de mon tableau je la fait où? Le but est de faire l'initialisation qu'une seule fois.
Marsh Posté le 19-09-2007 à 14:30:37
Bon je crois que j'y suis arrivé :
Toto.h
extern char * Toto[3];
Fic1.c
#include "Toto.h"
char * Toto[3]= {"A","B","C"};
/*...*/
/*Lecture d'un element*/
Ficn.c
#include "Toto.h"
/*...*/
/*Lecture d'un element*/
Marsh Posté le 19-09-2007 à 14:53:09
const char *Toto[3] dans ce cas-là, comme ça tu indiques très clairement à toute personne lisant ton code que ce tableau est en lecture seule.
Marsh Posté le 19-09-2007 à 21:45:24
Edgar_Perry a écrit : Et l'initialisation de mon tableau je la fait où? Le but est de faire l'initialisation qu'une seule fois. |
Ben comme je l'ai dit dans mon post juste avant, dans "fi1.c"
Edgar_Perry a écrit : Bon je crois que j'y suis arrivé : |
Exactement comme j'avais dit !!! Encore un qui ne lit pas les conseils qu'on lui donne
Marsh Posté le 19-09-2007 à 12:50:11
Bonjour,
je souhaiterais déclarer dans un .h une varibale du type : char * Toto[3]={"A","B","C"}
et l'utiliser dans deux fichier fic1 et fic2 qui incluent tout les deux mon .h.
Mon problème c'est qu'à la compilation il me jette en me disant : multiple definition of 'Toto'
J'ai essayé de déclaré la variable en extern mais il n'a pas l'air d'aimer l'initialisation.
Merci pour vos réponses
Message édité par Edgar_Perry le 19-09-2007 à 15:54:43