Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1577 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Variable globale [Resolu]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Variable globale [Resolu]

n°1612958
Edgar_Perr​y
Posté le 19-09-2007 à 12:50:11  profilanswer
 

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 cité 1 fois
Message édité par Edgar_Perry le 19-09-2007 à 15:54:43
mood
Publicité
Posté le 19-09-2007 à 12:50:11  profilanswer
 

n°1612960
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 19-09-2007 à 12:51:01  profilanswer
 

mot clé "extern".

n°1612972
Edgar_Perr​y
Posté le 19-09-2007 à 13:27:59  profilanswer
 

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'

n°1612980
Emmanuel D​elahaye
C is a sharp tool
Posté le 19-09-2007 à 13:38:27  profilanswer
 

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.

 


Message édité par Emmanuel Delahaye le 19-09-2007 à 13:39:52

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1612992
Edgar_Perr​y
Posté le 19-09-2007 à 14:01:57  profilanswer
 

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 ?
 
 
 
 
 
 
 

n°1613007
Sve@r
Posté le 19-09-2007 à 14:20:54  profilanswer
 

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.  
 
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 ?


 
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...


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
n°1613009
Edgar_Perr​y
Posté le 19-09-2007 à 14:25:51  profilanswer
 

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.

n°1613012
Edgar_Perr​y
Posté le 19-09-2007 à 14:30:37  profilanswer
 

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*/

n°1613031
Elmoricq
Modérateur
Posté le 19-09-2007 à 14:53:09  profilanswer
 

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.

n°1613076
Edgar_Perr​y
Posté le 19-09-2007 à 15:55:01  profilanswer
 

merci a tous pour votre aide

mood
Publicité
Posté le 19-09-2007 à 15:55:01  profilanswer
 

n°1613210
Sve@r
Posté le 19-09-2007 à 21:45:24  profilanswer
 

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é :
 
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*/


 
Exactement comme j'avais dit !!! Encore un qui ne lit pas les conseils qu'on lui donne  :sarcastic:


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Variable globale [Resolu]

 

Sujets relatifs
Liste dérouolante avec Mysql et javascript(resolu)[C][NEW] Permutation de 2 variable (avec condition)
[Résolu] Utiliser indexing service[Résolu] Problème programme simple
[Résolu] Fonction readfile() et chemins relatifs/absolus[resolu] Pb programme simple en Ruby
[résolu] date et VButiliser une variable globale dans une fonction? [résolu]
[ORACLE FORMS] validité d'une variable globale ? [Résolu]Variable Globale? comprend pas... [RESOLU]
Plus de sujets relatifs à : Variable globale [Resolu]


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR