[C++] Redéclaration variables

Fermé
Sethpolma Messages postés 66 Date d'inscription mercredi 25 juin 2003 Statut Membre Dernière intervention 8 mars 2007 - 17 févr. 2006 à 21:48
 babar - 5 sept. 2007 à 14:01
Bonjour !

J'ai un petit problème en C++. Je dois avouer que je n'y comprends plus rien. Ce n'est pas la première fois que je programme en dispatchant mon code sur plusieurs fichiers, mais c'est la première fois que je suis confronté à ce problème de redéclaration de variable...

Voici une partie de mes différents fichiers.

Fichier main.cpp

#include "decl_func.h"
#include "decl_var.h"

extern bool fullscreen;

int WINAPI WinMain(...)
{
...
}


Fichier drawGL.cpp :

#include "decl_var.h"

int DrawGLScene(GLvoid)
{
...
}


Fichier decl_var.h

#ifndef DECLVAR
#define DECLVAR

#include <windows.h>

...

#endif


Voilà. Et, mon compilateur m'écrit d'assez nombreux "multiple definition of 'NOM_DE_VARIABLE'". Pourtant, j'ai bien mis des #ifndef... Mais ils ne semblent pas agir.

J'utilise Dev C++ 4.9.9.2. Si quelqu'un sait comment faire... Merci beaucoup !

4 réponses

arth Messages postés 9373 Date d'inscription mardi 27 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2016 1 366
17 févr. 2006 à 22:01
bonsoir

je suppose que tu utilises les 3 fichiers pour un seul programme( pit etre je me trompe), mais pour moi le problème serait que tu appelles à la fois "decl_var.h" dans le main.cpp et dans le drawGL.cpp . essaie d'en enlever un des deux , je pense ca devrait marcher. sinon bah n'écoute plus ce que je te conseille lol.

bonne fin de soirée
0
Sethpolma Messages postés 66 Date d'inscription mercredi 25 juin 2003 Statut Membre Dernière intervention 8 mars 2007 15
18 févr. 2006 à 07:26
Justement ! Je sais que je réinclus plusieurs fois ces fichiers. Mais j'en ai besoin. Car, mon fichier decl_var.h contient la déclaration de toutes les variables de mon programme. Et je dois les redéclarer dans les fichiers où je les utilise, vu que je les déclare comme étant extern.

Je réessaierai tout à l'heure avec Visual C++. Car, je ne pense pas avoir déjà eu le problème avant, avec cet autre compilateur... Affaire à suivre... :)
0
Dans tes fichiers .h tu écris, par exemple si ton fichier est "nom.h":

sur les deux premières lignes .
#ifndef _NOM_H_
#define _NOM_H_


dernière ligne :

#endif


cela permet d'appeler ton fichier qu'une seul fois lors de l'édition de lien, et ça évite les problèmes.

J'espère avori répondu à ta question
0
Bonjour,

je crois aussi qu"il y a un problème de dédoublement.
J"ai apprit a déclaré tous les "include" dans un seul
fichier et tous les fichiers du projet pointe sur
celui-ci.

Lupin
0
mamiemando Messages postés 32283 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 17 mars 2023 7 572
20 févr. 2006 à 00:12
Ben n'utilise pas de variables globales de toutes façons, c'est mal. En général quand on utilise une variable globale alors que le fichier la définissant n'est pas inclu, on utilise le mot extern.

Si un jour tu as des fonctions définies (ie proto+code) dans le .h, veille à mettre un inline pour éviter une multidéfinition de fonctions.

Bonne chance
0