Inclure plusieurs fois des fichiers .h

cs_guillaumeM Messages postés 4 Date d'inscription mardi 30 juillet 2002 Statut Membre Dernière intervention 9 juin 2004 - 30 juil. 2002 à 16:54
cs_ProGamer Messages postés 44 Date d'inscription jeudi 11 juillet 2002 Statut Membre Dernière intervention 1 février 2022 - 2 août 2002 à 15:38
j'ai un probleme en incluant les fichiers .h dans plusieur fichiers .cpp en effet j'ai des erreur de type
float PlayerMass" (?PlayerMass@@3MA) already defined in physics.obj

alors j'essaye ceci par exemple

#ifndef _GLVARS_H_
#define _GLVARS_H_

#pragma once

.
.
.

#endif

est ce que le nom de la variable (ici _GLVARS_H_) est important est il deja definit ou peut on prendre celui que l'on veut
qt au pragma once l fait le meme effet que ifndef CA MARCHE PAS :-(
alors qqun pourrai il me dire comment on ecri ca pour que ca inclu qu'une seule fois et que ca definnsse donc 1 seule fois les variables
dans tt les fichiers .h c'est ainsi et ca amrche et qd j'essaye ca marche pas

merci de votre reponse

-NeO-

5 réponses

cs_Beuss Messages postés 100 Date d'inscription samedi 27 juillet 2002 Statut Membre Dernière intervention 11 juin 2003
31 juil. 2002 à 21:41
heu chez moi je déclare pas des variables dans un header, je les déclare dans un source et dans le header je met :
extern int MaVariable;
0
cs_guillaumeM Messages postés 4 Date d'inscription mardi 30 juillet 2002 Statut Membre Dernière intervention 9 juin 2004
1 août 2002 à 08:04
ouai mais ca ca marche pas

en fait je voudrai inclure un fichier header contenant des variables dans plusieurs fichier source mais a ce moment la les variables sont définies plusieurs fois (d'ou des erreurs de link)
alors j'essaye
#ifndef NOM_QUELCONQUE
#define NOM_QUELCONQUE
.
.
.
#endif

ceci est censé regler le probleme et n'inclure les fichier header qu'une seule fois

d'apres les bouquins que j'ai on peut aussi utiliser
#pragma once

ca a le meme effet

mais chez moi ca ne marche pas du tt

alors je voudrai savoir comment on fait pour
eviter les inclusions multiples

merci

-NeO-
0
cmarsc Messages postés 455 Date d'inscription mercredi 6 mars 2002 Statut Membre Dernière intervention 18 décembre 2003
1 août 2002 à 09:13
salut,

pour inclure des fichiers qui contiennent des variables ou des fonctions dans d'autres fichiers il faut faire include "mon_fichier.h" les informations dans ce fichier devraient être exploitables dans le fichier appelant, si différents fichiers ont des variables globales dans plusieurs fichiers il y aura des messages d'erreurs et pour les fonctions il faut taper
extern avant le nom de la fonction.

cmarsc ;-)
0
cs_Beuss Messages postés 100 Date d'inscription samedi 27 juillet 2002 Statut Membre Dernière intervention 11 juin 2003
1 août 2002 à 11:37
Ah sisi ca marche
exemple

Header :
#ifndef MONHEADER_H
#define MONHEADER_H

extern int Nombre;

#endif

Premier fichier

#include "MonHeader.h"

void MaFonction(void)
{
Nombre++;
}

Deuxieme fichier

#include <stdio.h>

extern void MaFonction(void);
int Nombre = 0;

void main(void)
{
MaFonction();
printf("Nombre vaut %i", Nombre);
}

Ca marche je viens de le tester !!!!!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_ProGamer Messages postés 44 Date d'inscription jeudi 11 juillet 2002 Statut Membre Dernière intervention 1 février 2022
2 août 2002 à 15:38
On m'a donné une méthode pour ce genre de chose.

Dans le header (supposons HEADER.H):
-------------------------------------------
#ifndef VARIABLES
#define EXTERN extern
#else
#define EXTERN
#endif

EXTERN int Variable1;
EXTERN int Variable2;
-------------------------------------------

Dans un fichier CPP:
-------------------------------------------
#define VARIABLES
#include "HEADER.H"
-------------------------------------------

Dans tous les autres fichier CPP utilsant ce header:
-------------------------------------------
#include "HEADER.H"

Quand la variable VARIABLES n'est pas définie, lors de la compilation, les variables seront déclarées extern. Il ne faut donc déclarer VARIABLES que dans un seul fichier CPP.
0
Rejoignez-nous