[C++] Erreurs de redefinitions de variables....

Erreurs de redefinitions de variables.... [C++] - C++ - Programmation

Marsh Posté le 22-03-2003 à 21:27:01    

Mon code est separe en plusieurs sources pour plus de simplicité.
Il y a donc des variables globales qui doivent vakoir dans tous les fichiers. Je les ai regroupees dans un header que voici :

Code :
  1. #ifndef vars
  2. #define vars
  3. #define W 800
  4. #define H 600
  5. BITMAP *buffer;
  6. bool quit;
  7.  
  8. #endif


 
ce fichier est inclu par deux sources differentes , main.cpp et init.cpp , le compilateur (dev-cpp) me sort des erreurs de redefinition:
 
init.o(.bss+0x0):init.cpp: multiple definition of `buffer'
main.o(.bss+0x0):main.cpp: first defined here
init.o(.bss+0x4):init.cpp: multiple definition of `quit'
main.o(.bss+0x4):main.cpp: first defined here
 
Qu'est-ce qui ne va aps dans mon source?
Comment faire?
 
D'avance merci.


---------------
Do you serve a purpose,Or purposely serve?
Reply

Marsh Posté le 22-03-2003 à 21:27:01   

Reply

Marsh Posté le 22-03-2003 à 21:58:29    

djfm a écrit :

Mon code est separe en plusieurs sources pour plus de simplicité.
Il y a donc des variables globales qui doivent vakoir dans tous les fichiers. Je les ai regroupees dans un header que voici :

Code :
  1. #ifndef vars
  2. #define vars
  3. #define W 800
  4. #define H 600
  5. BITMAP *buffer;
  6. bool quit;
  7.  
  8. #endif


Qu'est-ce qui ne va aps dans mon source?
Comment faire?
 
D'avance merci.


tu dois déclarer et non définir dans ton .h :

Code :
  1. extern BITMAP *buffer;
  2. extern bool quit;


Ceci ne fait que prévenir le linker qu'il va falloir aller à la pêche à la variable.
 
 
et définir dans un seul de tes .c :

Code :
  1. BITMAP *buffer;
  2. bool quit;


pour que la variable existe.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed