Organisation des fichiers .cpp .h pour le compilateur

Organisation des fichiers .cpp .h pour le compilateur - C++ - Programmation

Marsh Posté le 18-05-2003 à 12:04:50    

Jusqu'a present je n ai fait que des petits progs qui se limitaient a un header et a un fichier main.cpp
parfois plusieurs headers chainés (cad en pile)
 
depuis trois jours j essaye de franchir le pas.
j essaye de programmer une fenetre opengl avec un cube dont le deplacement est gere par l utilisateur.
 
Mais voila : apres avoir recupere a travers differents tutos ce dont j avais besoin et en essayant de faire des fichiers
-input.cpp gerant le directx
-main.cpp avec le winmain et le winproc
-opengl.cpp gerant l initialisation de la fenetre
-texture.cpp gerant le chargement des textures
-draw.cpp contenant la boucle principale du jeu
etc....
 
je m y perd.(pas dans la lecture du code mais dans la facon d appeler les fonctions definies ici et la) j en suis  a faire des extern sur tous les prototypes de mes fonctions en debut de chaque cpp.
vc++ m oblige a reorganiser mes fichiers .h au hasard jusqu a ce que ca marche sans quoi j ai des erreurs etranges du genre :
"vous essayez de redefinir le type 'class'"
 
 
D'ou ma question :
Y a t il une facon "academique" d organiser un programme cpp ?


Message édité par chewif le 18-05-2003 à 12:07:37
Reply

Marsh Posté le 18-05-2003 à 12:04:50   

Reply

Marsh Posté le 18-05-2003 à 12:13:07    

humm t'as pensé à proteger tes fichiers contre les inclusions mutliples ?
 
A+


Message édité par Babouchka le 18-05-2003 à 12:13:39
Reply

Marsh Posté le 18-05-2003 à 12:18:57    

c est a dire?
contre le fait de faire  
#include "fichier1.h" dans le fichier 2
et  
#include "fichier2.h" dans le 1 ?
 
non rien fait de special
j essaye juste d eviter


Message édité par chewif le 18-05-2003 à 12:19:30
Reply

Marsh Posté le 18-05-2003 à 12:21:23    

ben au debut de chaque fichier .h, tu mets  
 
 

Code :
  1. #ifndef MONFICHIER_H
  2. #define MONFICHIER_H

 
 
et à la fin du fichier tu mets
 
 

Code :
  1. #endif


 
A+


Message édité par Babouchka le 18-05-2003 à 12:21:40
Reply

Marsh Posté le 18-05-2003 à 12:24:19    

merci j essayerai ca.
 
cependant il y a toujours la question : comment s organise un programme ?
est-ce que je dois absolument declarer toutes mes classes et structures dans un fichier .h qui sera inclus dans tous les cpp ?

Reply

Marsh Posté le 18-05-2003 à 12:28:28    

en général oui, m'enfin pour les structures,  si t'as pas besoin qu'elles soient accessibles par d'autres fichiers, t'es pas obligé de les mettre dans un .h
 
A+

Reply

Marsh Posté le 19-05-2003 à 00:22:44    

chewif a écrit :

merci j essayerai ca.
cependant il y a toujours la question : comment s organise un programme ?
est-ce que je dois absolument declarer toutes mes classes et structures dans un fichier .h qui sera inclus dans tous les cpp ?


 
En principe tu peux mais pour des raisons d'organisations il vaut mieux segmenter les declarations dans plusieurs .h.  
(c'est plus facile a reutiliser quand c'est segmenté et c'est le but d'avoir des .h et des unités .cpp à l'origine)
 
En general il y a un .h pour un .cpp mais tu peux avoir des .h qui auront des utilites speciales (inclure d'autres .h ou faire des forward declarations ou des templates inline.
Dans un projet C++ de base, les fichiers .h sont tres nombreux et pour eviter les inclusions inutiles qui vont ralentir la compilation utiliser tant que possible les forward declarations.
 
Ensuite tu peux aussi envisager de passer aux precompiled headers dont le but est d'accélerer la compilation mais c'est un autre topic.
 
LeGreg

Reply

Marsh Posté le 19-05-2003 à 01:00:01    

en effet le un .h pour un .cpp a fini par s imposer.
ca m a pris du temps mais j ai un truc un peu plus propre.
La prochaine fois je reflechirai avant de me jeter directement sur le clavier.
 
merci pour vos reponses.

Reply

Marsh Posté le 19-05-2003 à 06:31:53    

Babouchka a écrit :

ben au debut de chaque fichier .h, tu mets  
 
 

Code :
  1. #ifndef MONFICHIER_H
  2. #define MONFICHIER_H

 
 
et à la fin du fichier tu mets
 
 

Code :
  1. #endif


 
A+

euh ça va pas suffire, faut décorer un peu plus, par ce que pensez bien que y forcément un autre couillons ur terre qui aura appeler son ficheir stack.h et si vous pensez pas à ça, vous passerez un muaavis quart d'heure
 
une petite combinaison NomDeFichier / Date / NomDuProjet / Auteur est plus que bienvenue

Reply

Sujets relatifs:

Leave a Replay

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