[ VC++ ] VStudio tient pas compte de mes #ifndef _MACLASSE_H etc.

VStudio tient pas compte de mes #ifndef _MACLASSE_H etc. [ VC++ ] - Programmation

Marsh Posté le 29-07-2002 à 14:05:20    

Dans mes classes j'ai des :
 
#ifndef _maclasse_h
#define _maclasse_h
 
.
.
.
 
 
#endif
 
et dans d'autres fichiers j'ai des #include "maclasse.h"
 
 
Mais apparament lors de la compilation visual studio repasse quand même dans la classe :/
 
Quelle option permet de remédier à ce problème ?
 

Reply

Marsh Posté le 29-07-2002 à 14:05:20   

Reply

Marsh Posté le 29-07-2002 à 14:07:10    

ca sent la classe A qui inclue la classe B tandis que la classe B inclue la classe A, je me trompe ? :D

Reply

Marsh Posté le 29-07-2002 à 14:12:25    

chrisbk a écrit a écrit :

ca sent la classe A qui inclue la classe B tandis que la classe B inclue la classe A, je me trompe ? :D




 
oui :D
 
 
edit : (ça le fait pas que pour les classes, mais dès que j'inclue un même .h : il me met (logique) qu'il y a des redéfinitions etc.)


Message édité par WhitePoney le 29-07-2002 à 14:15:00
Reply

Marsh Posté le 30-07-2002 à 01:43:43    

eeupeuuuu !

Reply

Marsh Posté le 30-07-2002 à 01:56:25    

détaillleuh !

Reply

Marsh Posté le 30-07-2002 à 09:36:39    

poste ;-)

Reply

Marsh Posté le 30-07-2002 à 11:48:42    

youdontcare a écrit a écrit :

détaillleuh !




 
 
? c'est pas clair ???
 
Mettons que j'ai par exemple un #define MAX_TRUC 50 dans utils.h et que j'ai plusieurs autres fichiers qui veulent utiliser ce MAX_TRUC bein je mets des #include "utils.h" dedans ; mais lors de la compilation il me met des trucs du style "@MAX_TRUC already defined in main.obj" ou alors MAX_TRUC redefinition enfin c space quoi.
 
Même en mettant des #ifndef _TDEJAVENULAIMBECILE_ #define _TDEJAVENULAIMBECILE_ ...  bein ça change pas pourtant ça devrait non ?!
 
 
 

Reply

Marsh Posté le 30-07-2002 à 14:14:09    

WhitePoney a écrit a écrit :

 
 
Même en mettant des #ifndef _TDEJAVENULAIMBECILE_ #define _TDEJAVENULAIMBECILE_ ...  bein ça change pas pourtant ça devrait non ?!
 




 
Pas forcément.
Lorsque tu compiles ton projet, chaque fichier C (ou C++) est compilé séparément. Donc si chaque fichier .c fait un include de ce fichier .h, alors il n'y a pas de raison qu'il y est une erreur de compil.
Par contre, lors du link, le linker va crier car le symbol est défini dans chaque fichier objet .obj
 
Si c'est un #define, cela ne devrait pas poser de problème car tout est fait lors de la précompilation, et la variable est remplacée par se 'vraie' valeure. Le problème ne doit se poser que si tu définies une variable.
genre
 
#ifndef XXX
#define XXX
const int MYINT=7;
#endif
 
alors si le header qui contient ces lignes est inclu par plusieurs fichiers source, ca ne va pas passer au link, même si ca peut passer à la compil.
 
Donc c'est louche ton truc, par ce que un #define devrait passer.

Reply

Marsh Posté le 30-07-2002 à 14:38:10    

poste tes codes !
 
ce forum reconnait une belle  balise [cpp][/cpp]

Reply

Sujets relatifs:

Leave a Replay

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