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

  FORUM HardWare.fr
  Programmation
  C++

  [C++] programmation multilangues - variables externe

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C++] programmation multilangues - variables externe

n°1354414
MassLaMena​ce
Posté le 26-04-2006 à 15:40:07  profilanswer
 

Bonjour a tous,
 
J'essaye de realiser un programme multilangue a la compilation. Pour ce faire je definis mes variables dans un fichiers que je choisi a la compilation en fonction d'une macro predifinie. Les messages multilangues sont uniquement des messages d'erreurs. Ils sont donc inclus dans un unique fichier, qui est lui inclut dans de nombreux autres.
Mon message d'erreur est le suivant :

Code :
  1. obj/chainmail.o(.data+0x0):chainmail.cc: multiple definition of `valueNegativeMsg'
  2. obj/main.o(.data+0x0):main.cc: first defined here
  3. obj/chainmail.o(.data+0x4):chainmail.cc: multiple definition of `valueTooSmallMsg'
  4. obj/main.o(.data+0x4):main.cc: first defined here
  5. obj/chainmail.o(.data+0x8):chainmail.cc: multiple definition of `valueTooBigMsg'
  6. obj/main.o(.data+0x8):main.cc: first defined here
  7. obj/pr2d.o(.data+0x0):pr2d.cc: multiple definition of `valueNegativeMsg'
  8. obj/main.o(.data+0x0):main.cc: first defined here
  9. obj/pr2d.o(.data+0x4):pr2d.cc: multiple definition of `valueTooSmallMsg'
  10. obj/main.o(.data+0x4):main.cc: first defined here
  11. obj/pr2d.o(.data+0x8):pr2d.cc: multiple definition of `valueTooBigMsg'
  12. obj/main.o(.data+0x8):main.cc: first defined here
  13. obj/pr2d-neighborarea.o(.data+0x0):pr2d-neighborarea.cc: multiple definition of `valueNegativeMsg'
  14. obj/main.o(.data+0x0):main.cc: first defined here
  15. obj/pr2d-neighborarea.o(.data+0x4):pr2d-neighborarea.cc: multiple definition of `valueTooSmallMsg'
  16. obj/main.o(.data+0x4):main.cc: first defined here
  17. obj/pr2d-neighborarea.o(.data+0x8):pr2d-neighborarea.cc: multiple definition of `valueTooBigMsg'
  18. obj/main.o(.data+0x8):main.cc: first defined here
  19. obj/shape.o(.data+0x0):shape.cc: multiple definition of `valueNegativeMsg'
  20. obj/main.o(.data+0x0):main.cc: first defined here
  21. obj/shape.o(.data+0x4):shape.cc: multiple definition of `valueTooSmallMsg'
  22. obj/main.o(.data+0x4):main.cc: first defined here
  23. obj/shape.o(.data+0x8):shape.cc: multiple definition of `valueTooBigMsg'
  24. obj/main.o(.data+0x8):main.cc: first defined here


 
Le contenu de mes fichiers sont :
 
msg.en.h

Code :
  1. const char *valueNegativeMsg = "value is negative, that why this exception has been throw.";
  2. const char *valueTooSmallMsg = "value is smaller than limit, therefore modification can not be apply.";
  3. const char *valueTooBigMsg = "value is bigger than limit, therefore modification can not be apply.";


 
msg.fr.h

Code :
  1. const char *valueNegativeMsg = ("value est negatif, c'est pourquoi cette exception fut jetee." );
  2. const char *valueTooSmallMsg = ("value est plus petit que limit, donc la modification ne peut pas etre appliquee." );
  3. const char *valueTooBigMsg = ("value est plus grande que limit, donc la modification ne peut pas etre appliquee." );


 
msg.h

Code :
  1. #ifndef __MSG_H__
  2. #define __MSG_H__
  3. extern const char *valueNegativeMsg;
  4. extern const char *valueTooSmallMsg;
  5. extern const char *valueTooBigMsg;
  6. #if defined(__EN__)
  7. #include "en/msg.en.h"
  8. #elif defined(__FR__)
  9. #include "fr/msg.fr.h"
  10. #endif
  11. #endif // __MSG_H__


 
exceptions.h

Code :
  1. #ifndef __EXPCEPTIONS_H__
  2. #define __EXPCEPTIONS_H__
  3. #define __FR__
  4. #include <string>
  5. #include <stdexcept>
  6. #include "lang/msg.h"
  7. ...


 
Et comme je vous l'ai de nombreux fichiers (ceux qui sont la source de mes messages d'erreur) incluent exceptions.h
 
Comment puis je regler ce probleme ? L'utilisation du mot clef 'extern' est elle justifiee ?
Que puis je faire pour obtenir un programme multilangues (a la compilation ou al'execution) avec une autre solution ?
 
Merci de votre attention,
 
Thomas

mood
Publicité
Posté le 26-04-2006 à 15:40:07  profilanswer
 

n°1354415
_darkalt3_
Proctopathe
Posté le 26-04-2006 à 15:41:07  profilanswer
 

quel environnement ?

n°1354434
Taz
bisounours-codeur
Posté le 26-04-2006 à 16:02:55  profilanswer
 

beurk ton truc, utilise gettext.
 
sinon des définitions de chaines doivent être dans un .cpp et pas dans un .h

n°1354692
MassLaMena​ce
Posté le 26-04-2006 à 20:03:48  profilanswer
 

Pour conclure :
 
L'alternative est gettext.
 
Les deux solutions sont sur :
 
http://www.commentcamarche.net/for [...] s-externes
 
Bye bye,
Thomas

n°1354758
Taz
bisounours-codeur
Posté le 26-04-2006 à 21:36:55  profilanswer
 

pfff, sur ccm, ils n'ont rien compris à définition/déclaration


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

  [C++] programmation multilangues - variables externe

 

Sujets relatifs
[PERL] Noms de variables variables ?Jointure externe
Aide : Quel est plus simple langague de programmation .Variables HTML avec applet JAVA
Programmation ipodXSLT / Xpath : Comparer deux variables!
variables membres sont des objets -> bonne/mauvaise idée ?Enumérer les variables Javascript
JSP/JSTL et passage de variables...(débutant)[Flash] créer un fichier externe
Plus de sujets relatifs à : [C++] programmation multilangues - variables externe


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