Interet des fichiers .h

Interet des fichiers .h - C++ - Programmation

Marsh Posté le 10-03-2006 à 22:49:08    

Au début quand j'ai commencé a programmé je pensai qu'on devait obligatoirement déclaré les prototypes et les variables dans les fichiers d'en-tete(*.h), mais je me suis rendu compte que peut importe si les fichiers étaient .h ou .cpp ca ne change rien je peux meme mettre tout mon programme dans un fichier d'en-tete. Je voudrai savoir si c'est juste une convention pour rendre les programmes plus lisibles ou si c'est vraimment une restriction.
Merci.

Reply

Marsh Posté le 10-03-2006 à 22:49:08   

Reply

Marsh Posté le 10-03-2006 à 22:51:28    

A la base, ce n est qu une convention. Pourtant de nombreux programmes annexes utilisent l extension, comme par exemple les générateurs de docs ou de makefiles.

Reply

Marsh Posté le 10-03-2006 à 22:53:27    

renseigne toi sur le pre-processeur C et comment on créer un module de compilation (bibliothèque par exemple)

Reply

Marsh Posté le 10-03-2006 à 23:31:20    

Merci.

Reply

Marsh Posté le 15-03-2006 à 16:29:44    

Il a plein de bonne raison d'utiliser les .h.
1: propreté/maintenance du code
2: optimisation (en génral on met les inline dans le .h)
3: permet de centraliser les variables et les defines

Reply

Marsh Posté le 15-03-2006 à 16:41:16    

Comment faîtes vous pour employer une librairie sans .h ??

Reply

Marsh Posté le 15-03-2006 à 19:29:14    

En utilisant un .cpp pour l interface, et des .H pour le code!
Ça fonctionne avec les compilateurs mais pas forcément avec les environnements de développement.

Reply

Marsh Posté le 15-03-2006 à 19:57:59    

ou un .hpp vu qu'on est en c++, des fois :D
ci sa fonctionne pas avec des ide c'est parce que c'est eux qui génèrent les commandes et ils font des supposition sur la nature du fichier à partir de son extension pour avoir un certain niveau d'automatisme
 
le compilateur en lui meme ne sais pas ce qu'est un en-tete et il ne comprend pas les directives du cpp, tout ca se fait avant la compilation et les en-tetes permettent (entre autre) de diviser ce qui sera le code d'une unité de compilation en plusieurs fichiers. Le but principal est de séparés les déclarations et les définitions, les fichiers contenant que des déclaration pourront faire partie (etres inclus) dans d'autre unité de compilation du projet alors que les fichiers contenant les définitions seront compilés une fois pour toute.

Reply

Marsh Posté le 15-03-2006 à 20:48:10    

skelter a écrit :

ou un .hpp vu qu'on est en c++, des fois :D


.hh, .HH, .hxx, etc.
 

Citation :

e compilateur en lui meme ne sais pas ce qu'est un en-tete et il ne comprend pas les directives du cpp, tout ca se fait avant la compilation et les en-tetes permettent (entre autre) de diviser ce qui sera le code d'une unité de compilation en plusieurs fichiers.


Mais comme généralement, on invoque le cpp en meme temps que le compilateur, ...
 

Citation :

Le but principal est de séparés les déclarations et les définitions, les fichiers contenant que des déclaration pourront faire partie (etres inclus) dans d'autre unité de compilation du projet alors que les fichiers contenant les définitions seront compilés une fois pour toute.


Autre point de vue : les headers, c'est pour respecter l'ODR (One Definition Rule). Pour garantir que les déclarations d'une fonction ordinaire (par exemple) ne soit pas différentes dans toutes les TU, on utilise des headers que l'on incluent. La conséquence est que cela sépare -- dans certains cas -- l'interface de l'implémentation.

Reply

Marsh Posté le 15-03-2006 à 21:09:24    

Tout fichier .h doit commencer par quelquechose comme:
 
#ifndef CeFichierEstInclu
#define CeFichierEstInclu
 
et finir par:
 
#endif
 
Pour ne l inclure qu une seule fois. Sinon il peut être inclu plusieurs fois via d autres fichiers inclus.
 
Ce n est pas le cas des fichier .cpp, puisqu ils ne sont jamais inclus.
 
Encore une différence qui est utilisée pas les IDE: ils ajoutent ces lignes automatiquement à la création de nouveaux fichiers .h (souvent ils définissent NOMDUFICHIER_H).

Reply

Marsh Posté le 15-03-2006 à 21:09:24   

Reply

Marsh Posté le 16-03-2006 à 12:55:53    

Avec moi il n y a pas de difference si je met .h et .hpp meme quand je met du code en c++.


Message édité par Profil supprimé le 16-03-2006 à 12:56:27
Reply

Sujets relatifs:

Leave a Replay

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