begin process at 2012 05 29 16:43:29
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Débutant(e)

 > 

Prob de déclaration et d'utilisation de variables ds plusieurs fichiers


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Prob de déclaration et d'utilisation de variables ds plusieurs fichiers

mardi 15 mai 2007 à 21:43:58 | Prob de déclaration et d'utilisation de variables ds plusieurs fichiers

julien_boss

Bonjour, probleme de débutant mais je séche :/ J'ai mon fichier main.cpp, et deux autres : calc.h et calc.cpp j'inclus dans les 2 fichiers .cpp le fichier .h. J'ai déclaré des variables (x et y) dans le fichier .h que je souhaite utiliser dans les 2 fichiers .cpp. Et là, erreur (je boss avec Dev-C++) : multiple definition of `x' first defined here multiple definition of `y' first defined here ld returned 1 exit status les "first defined here" ne pointent sur aucune ligne de code. Du fait je ncomprends pas mes erreurs ... pour contourner le prob j'ai déclaré les variables dans le fichier calc.cpp et les ai redéclaré avec le préfixe 'extern' dans le fichier main.cpp. Mais le probleme me tracasse, je voudrais savoir ce qui foire >< Voilà, apportez moi la solution pleeease, merki :)
mardi 15 mai 2007 à 21:53:47 | Re : Prob de déclaration et d'utilisation de variables ds plusieurs fichiers

omtp13

si tu as redeclaré tes varibles x et y dans le main c'est normal!!
mardi 15 mai 2007 à 22:14:21 | Re : Prob de déclaration et d'utilisation de variables ds plusieurs fichiers

julien_boss

euh je les ai redéclaré dans le main (avec le mot cle extern, c'est tres important :) justement pour que ca fonctionne ... C'est quand je ne les "redéclarent" pas (et qu'elles sont déclarés dans le fichier calc.h) que ca foire.
mardi 15 mai 2007 à 22:32:52 | Re : Prob de déclaration et d'utilisation de variables ds plusieurs fichiers

omtp13

mais le probleme vient du fait que quanq tu met #include calc.h dans le main.cpp tes variables sont deja connu par le compilo et lorsqu'il rencontre à nouveau extern int x  et extern int y  il te dit redefinition (j'ai suposé que x et y sont des doubles ici )
ce qui est normal;

mardi 15 mai 2007 à 22:42:11 | Re : Prob de déclaration et d'utilisation de variables ds plusieurs fichiers

julien_boss

Le mot cle extern permet ce genre de "redéclaration" (qui n'en est pas une complétement d'ailleurs), non ? et puis, non, le probleme ne vient pas de là, puisque c'est quand je déclare les variables dans calc.h, en utilisant les var et sans mettre d'extern x etc ... ds main.cpp qu'il y'a erreur ! Et non quand je met des extern double x etc ... dans le main, avec la déclaration des variables ds calc.cpp (auquel cas ca fonctionne impec')
mardi 15 mai 2007 à 22:51:11 | Re : Prob de déclaration et d'utilisation de variables ds plusieurs fichiers

omtp13

 mais en principe les extern de variable sont utilsés par deux fichierx .c et non pas un .h et un point.cpp

c'est justement ce quetu as fait ici :"pour contourner le prob j'ai déclaré les variables dans le fichier calc.cpp et les ai redéclaré avec le préfixe 'extern' dans le fichier main.cpp"

dans ce cas losque que le compilo compile il ne "voit" pas eux fois les variables x et y.

d'ailleurs l'utilité d'une varible globale et de permttre à de fichier cpp de "voir" cette varible et d'agir sur cette varaible. MAIS aucun interet à faire ça entre un fichier .h et une fichier . cpp   
mardi 15 mai 2007 à 23:06:07 | Re : Prob de déclaration et d'utilisation de variables ds plusieurs fichiers

julien_boss

Merci pour le rappel sur le mot cle extern. Mais ca n'est pas le sujet. "d'ailleurs l'utilité d'une varible globale et de permttre à 2 fichier cpp de "voir" cette varible et d'agir sur cette varaible. MAIS aucun interet à faire ça entre un fichier .h et une fichier . cpp " je n'agit pas sur la variable dans le fichier .h, je veux la déclarer dans le .h ! Alors ma question est : pk je ne peux pas déclarer une variable dans un .h et l'utiliser dans le main ? Sachant qu'au début du fichier .h, j'ai bien mis les entêtes : #ifndef __CALC_H__ #define __CALC_H__ //etc... #endif
mardi 15 mai 2007 à 23:06:43 | Re : Prob de déclaration et d'utilisation de variables ds plusieurs fichiers

luhtor

"mais en principe les extern de variable sont utilsés par deux fichierx .c et non pas un .h et un point.cpp" => Absolument pas. Utiliser deux variables dans 2 cpp différent, par contre, ca me parait délirant. La variable doit se trouver dans un header partagé par les deux. Pour moi c'est un pb de struture de programme si tu as de telles déclarations de variables.


Ton pb vient du fait, qu'un header, c'est juste des lignes qui sont "copiées" dans ton cpp durant la compilation. Donc c'est surement plus un message d'avertissement pour te dire que les deux variables ont beau avoir le meme nom, elles ne sont pas égales: une modification de l'une n'entraine aucune modification de l'autre. Donc ce qui se passe en réalité, n'est pas ce à quoi tu penses toi. Alors que le mot clef externe permet de définir un lien vers une unique déclaration de la variable.
mardi 15 mai 2007 à 23:09:06 | Re : Prob de déclaration et d'utilisation de variables ds plusieurs fichiers

julien_boss

Ok je vois, merci. On ne doit donc jamais déclarer de variable dans un header ?
mercredi 16 mai 2007 à 00:49:21 | Re : Prob de déclaration et d'utilisation de variables ds plusieurs fichiers

luhtor

Réponse acceptée !
Si tu peux, mais soit avec le mot clef extern ou static. D'ailleurs, je vois pas bien la différence en pratique entre les deux :)

1 2

Cette discussion est classée dans : fichier, variables, fichiers, cpp, calc


Répondre à ce message

Sujets en rapport avec ce message

Redeclaration de variables [ par AlexMAN ] Bonjour, J'ai un petit souci : Mon projet utilise 2 fichiers sources *.cpp, et un fichier entete *.h qui contient toutes les variables communes aux 2 [Dev-Cpp] Multiples fichiers .cpp [ par Rouliann ] Bonjour tout le monde! Je programme actuellement un petit Pacman (que vous pouvez voir ici) et comme je n'avais qu'un fichier .cpp (le fichier main) e Comment copier un fichier .H et un fichier.CPP d'un programme à un autre [ par soamie2001 ] Salut à vous,J'ai ecris un programme x en C++ sous visual studio.net qui comprend des fichiers H et des fichiers CPP.Manitenant j'ecris un programme y Plusieurs fichiers sources [ par nisaloncaje ] ReBonjour, dans mon projet, je dispose d'un fichier main.cpp qui contient la fonction main et les déclarations de classe.Je pensais mettre, dans un fi Variables globales [ par repial ] Bonjour à tous,dans un projet à plusieur fichiers (sous dev cpp), je cherche à déclarer mes variables dans un de ces fichiers, et qu'elles soient acce Ouvrir un fichier dans son intégralité en C++ [ par ndubien ] Bonjour,J'ai déjà posé cette question, mais elle n'a été qu'à moitié satisfaite.Je m'explique je suis en train de créer un programme qui necessite d'o fichiers dans .exe [ par didoux95 ] Bonjour a tous.Je debut en C/C++ (je programme en JAVA).J'aurais aimé savoir comment est ce que je peu faire pour inserer un fichier dans mon exe et p afficher les attribut d'1 fichier XML [ par noura5101 ] bonjour,je dois reliser un editeur des fichiers xml,donc je dois afficher le fichier xml,et afficher ses attributs dans une table pour modifier leurs Ouvrir un fichier [ par ndubien ] Bonjour,Comment récupérer le nom des fichiers ouverts avec :ZeroMemory(&ofn, sizeof(OPENFILENAME));ofn.lStructSize = sizeof(OPENFILENAME);ofn.hwndOwne fichier batch [ par khwiniz ] salut, je cherche comment je peux lancer le logiciel Filezilla de FTP et faire le transfert des fichiers log chaque 15 min (chaque 15 min on fait le t


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,186 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales