peut on inclure des fichiers .h dans d'autes fichiers .h ???

peut on inclure des fichiers .h dans d'autes fichiers .h ??? - C - Programmation

Marsh Posté le 10-02-2006 à 16:37:07    

bongour !!
 
tout est dans le titre ...peut on inclure des fichiers .h dans d'autes fichiers .h ??? plus exactement, est ce que c'est conseillé ou pas du tout ??
 
 
en fait j'ai un code dont je met les protos de fonctions dans un ficher ".h". Seulement, les protos des fonctions font appel a des structures définies par une librairie ...(GSL), par exemple certaines fonctions dans mon point h sont du type :
 

Code :
  1. int mafonction (gsl_matrix * m);


 
or, j'ai besoin d'inclure ce fichier ailleurs, mais ailleurs je ne fais pas appel aux fonctions du type que je viens de citer au dessus. Donc pour ne pas avoir d'erreur de compilation, le seul truc que j'ai trouvé c'est de mettre  

Code :
  1. #include <gsl_matrix.h>


 
dans mon fichier ".h"
 
 
...je peux faire ca ?? c'est mal ? je dois me flageller et demander repentance ? mon coeur chavire, tiraillé, je suis en plein doute. Ô lumière, éclaire moi  [:arg]  
 
merci par avance :ange:

Message cité 1 fois
Message édité par in_your_phion le 10-02-2006 à 16:41:41
Reply

Marsh Posté le 10-02-2006 à 16:37:07   

Reply

Marsh Posté le 10-02-2006 à 16:52:30    

Bien sûr que tu peux.
 
D'ailleurs regarde les .h standards, tu verras qu'ils ne se privent pas.

Reply

Marsh Posté le 10-02-2006 à 17:23:22    


bondoir !!

Citation :

tout est dans le titre ...peut on inclure des fichiers .h dans d'autes fichiers .h ???


Oui. C'est une pratique courante et sans danger si on prend les précautions d'usage, telle que l'ajout de gardes anti-inclusions multiples dans une même unité de compilation comme expliqué ici :
 
http://mapage.noos.fr/emdel/codage [...] ser_source

Citation :

plus exactement, est ce que c'est conseillé ou pas du tout ??


Ce n'est pas déconseillé. C'est le code qui guide. La regle est simple. Un header doit avoir tout ce qu'il faut pour être compilable seul. Si il y a un paramètre de fonction FILE *, il doit inclure <stdio.h>. Si il y a un size_t dans une structure, il faut inclure <stddef.h> etc. Pareil avec les headers 'maison' ou des bibliothèques tierces.
 
Ensuite, ce sont les protections déjà évoquées qui font la police.

Citation :

en fait j'ai un code dont je met les protos de fonctions dans un ficher ".h".


Ok.

Citation :

Seulement, les protos des fonctions font appel a des structures définies par une librairie ...(GSL),


Mal formulé. Tu veux dire  

Citation :

les protos des fonctions font appel a des structures définies dans le fichier d'interface *.h d'une bibliothèque (GSL)


Citation :


par exemple certaines fonctions dans mon point h sont du type :

Code :
  1. int mafonction (gsl_matrix * m);




classique.

Citation :


or, j'ai besoin d'inclure ce fichier ailleurs, mais ailleurs je ne fais pas appel aux fonctions du type que je viens de citer au dessus. Donc pour ne pas avoir d'erreur de compilation,  


Si les .h sont correctement protégés, il n'y a aucun risque.

Citation :


le seul truc que j'ai trouvé c'est de mettre  

Code :
  1. #include <gsl_matrix.h>


dans mon fichier ".h"


Rien à dire.


Message édité par Emmanuel Delahaye le 10-02-2006 à 23:32:13

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 10-02-2006 à 21:19:02    

c'est important quand meme de savoir comment fonctionne le preprocesseur C
http://en.wikipedia.org/wiki/C_preprocessor
si tu utilises gcc, execute la commande

cpp fichier.c


et tu verras ce que recupere le compilateur

Reply

Marsh Posté le 14-02-2006 à 11:15:27    

merci pour vos réponses  :hello:

Reply

Sujets relatifs:

Leave a Replay

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