Inclure plusieurs fois des fichiers .h

Signaler
Messages postés
4
Date d'inscription
mardi 30 juillet 2002
Statut
Membre
Dernière intervention
9 juin 2004
-
Messages postés
40
Date d'inscription
jeudi 11 juillet 2002
Statut
Membre
Dernière intervention
9 novembre 2008
-
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

Messages postés
100
Date d'inscription
samedi 27 juillet 2002
Statut
Membre
Dernière intervention
11 juin 2003

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;
Messages postés
4
Date d'inscription
mardi 30 juillet 2002
Statut
Membre
Dernière intervention
9 juin 2004

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-
Messages postés
455
Date d'inscription
mercredi 6 mars 2002
Statut
Membre
Dernière intervention
18 décembre 2003

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 ;-)
Messages postés
100
Date d'inscription
samedi 27 juillet 2002
Statut
Membre
Dernière intervention
11 juin 2003

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 !!!!!
Messages postés
40
Date d'inscription
jeudi 11 juillet 2002
Statut
Membre
Dernière intervention
9 novembre 2008

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.