VStudio tient pas compte de mes #ifndef _MACLASSE_H etc. [ VC++ ] - Programmation
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 ?
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 ? |
oui
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.)
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 ?!
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.
Marsh Posté le 30-07-2002 à 14:38:10
poste tes codes !
ce forum reconnait une belle balise [cpp][/cpp]
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 ?