[C/C++] Inclusions de fichiers

Inclusions de fichiers [C/C++] - Programmation

Marsh Posté le 29-03-2001 à 18:57:37    

Rigolez pas. J'arrive pas me demerder avec les inclusions de fichiers sources et en-tete en c++.
Je m'explique : j'aimerais qu'un fichier source A connaisse les declaration d'un fichier source B (#include "fichierb.cpp" ) et que ce dernier connaisse les declarations du fichier A. Bref, il faut qu'ils se connaissent.  
Je pourrais les mettre dans le même fichier, mais ce serait bordélique, car il y a deja pas mal de ligne dans chacun.
Y a t il un moyen simple ?

Reply

Marsh Posté le 29-03-2001 à 18:57:37   

Reply

Marsh Posté le 29-03-2001 à 19:30:39    

Ben ca depend pas mal de ou exactement tu as besoin de tout ca.
 
Deja c'est rare que l'on fasse des #include "machin.cpp", a part pour les classes templates.
 
Sinon, si les fichiers n'ont besoin de se connaitre que dans les .cpp et pas dans les headers, et ben tu fais les inclusions dans les .cpp et pas dans le header, et reciproquement.
 
Et pis ben si même avec ca, ca ne fonctionne pas, alors faut rassembler dans un même fichier.

Reply

Marsh Posté le 30-03-2001 à 00:22:28    

Sinon, tu peux utiliser des protections d'inclusions. D'ailleurs, c'est toujours conseillé en C/C++.
 
Au tout début de A.h, tu mets :
#ifndef _A_H_
#define _A_H_
 
// Le reste de A.h, y compris ceci:
#include "B.h"
 
...
 
Et tu le termines par :
#endif // _A_H_
 
Et dans B.h:
#ifndef _B_H_
#define _B_H_
 
// Le reste de B.h, y compris ceci:
#include "A.h"
 
...
 
#endif // _B_H_
 
Ca devrait faire ce que tu veux.

Reply

Marsh Posté le 30-03-2001 à 08:23:11    

Haaaaaa, ok, tu fous le include dans ce bins conditionel. Et c'est censé passer, non ? Parce que je n'ai plus de pb de compilation, mais plein de pb de linkage (une trentaine pour erte exact, et je sais pas d'ou ca vient).

Reply

Marsh Posté le 30-03-2001 à 09:00:48    

oliv5 a écrit a écrit :

Haaaaaa, ok, tu fous le include dans ce bins conditionel. Et c'est censé passer, non ? Parce que je n'ai plus de pb de compilation, mais plein de pb de linkage (une trentaine pour erte exact, et je sais pas d'ou ca vient).




 
Ton probleme montre une grave probleme de conception.
Il n'est pas normal que A ait besion de B et B de A...
Decoupes tes fichiers en trois .h pour les headers, .i pour les inlines et definitions templates et .c (ou cpp) pour les codes.
et normalement ton probleme devrai disparaitre a moins que tu ne tentes d'inclure une classe A dans une classe B qui inclue une classe A ce qui est impossible...

Reply

Marsh Posté le 30-03-2001 à 16:06:37    

sinon si tu peux (a condition que a soit pas attibut de b ou inversement)
faire un  
class A;
dans B
 
et un class B; dans A
une forward reference only quoi , come il dir Rational rose.
le mieux c est d eviter au max les ncludes .
mais de toute facon c clair toujours proteger comme le disait biface
 
FK

Reply

Sujets relatifs:

Leave a Replay

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