Home
Notion de module en C et fichier header .h
Contents
1. Va Fiche informatique programmation en C phelme Notion de module en C et fichier header h 1 Notion de module RC a aa a a 1 2 ROIE COS HORMIS COLA aa a a oi 1 3 Mclu sionrd un icher havet INC anse rttnsesiestsesnse ces Restaurer sent trs 2 4 Exemple de fichier header h et C ss sssssssessrsnsrssrrnsrensnsnrnnsnnnsnennnennnnnnnennennneonrennnnnnnonnennnennnonneonnennnennnonnnnnnennnnnnna 3 Pr requis Vous savez comment compiler un code source situ dans un fichier c avec gcc Vous connaissez les options c et o du compilateur gcc 1 Notion de module en C Un programme peut tre constitu de plusieurs millions de lignes de code et de fonctions Sans atteindre cette complexit d s lors qu on a plus par exemple d une dizaine de fonction ou d un millier de lignes de code le code il devient essentiel pour s y retrouver d organiser votre code en plusieurs modules En C on appellera module un couple de fichier source extension c et en t te header extension h Un module regroupe des fonctions et ou variables et ou types traitant une sous partie du probl me global Le d coupage d un projet logiciel C en modules tout comme le d coupage en fonctions est fait au cas par cas en phase d analyse On cherchera ce que chaque module corresponde un tout signifiant Par exemple un module pourrait tre consacr la gestion d un type abstrait donn type liste chain e et fonctions de ma
2. endif Ce fichier sera ensuite inclut dans tous les fichiers header h des modules qui utilisent ces types
3. ent que chaque appel de fonction est fait avec le bon nombre de param tres et des types corrects pour chaque param tre etc De m me il aura connaissance des types d clar s dans monModule h de telle sorte qu il devient possible par exemple de d clarer des variable de ces types dans autreModule c Remarques Inclusion du header dans le fichier source du module Vous avez fortement int r t ce que le fichier source c d un module inclut son propre fichier header h monModule c inclut monModule h Cela permet que le compilateur v rifie lorsque le module sera compil que les deux correspondent bien Inclusion des headers des librairies standard Avec les explications qui pr c dent vous devriez maintenant comprendre pourquoi au d but d un fichier source on inclut les headers des fonctions de la librairies standard qui sont utilis es par le module ces headers contiennent les types et prototypes des fonctions en question Notez que pour les inclusions des librairies standard on utilie lt gt au lieu de double guillemets par exemple include lt maths h gt ou include lt stdio h gt Inclusion d un header h dans un autre header h Si et seulement si en g n ral un fichier header monModule h utilise des d clarations d un autre fichier autreModule h typiquement si monModule h d clare des fonctions dont certains param tres sont d un type d clar dans autreModule h il faut inclure autreModule h dan
4. module monModule depuis un autre module Outre qu il est essentiel pour le compilateur le fichier header aura aussi un r le de mode d emploi du module pour le d veloppeur car il liste toutes les fonctionnalit s du module sans dire comment ces fonctionnalit s sont en fait r alis s C est pourquoi on appelle aussi le fichier header monModule h l interface du module monModule 3 Inclusion d un fichier h avec Hinclude Pour utiliser les fonctionnalit s de monModule depuis un autre module autreModule il faut inclure le fichier header de monModule dans autreModule Cela se fait avec la primitive de pr compilation include fichier autreModule c include monModule h Lorsque le compilateur rencontre une inclusion include d un fichier il va avant de lancer la compilation proprement dite remplacer cette inclusion par le contenu du fichier inclus Ainsi dans l exemple pr c dent lors de la compilation de autreModule c tout se passera comme si le contenu du fichier d en t te monModule h tait coll la place du include En cons quence quand le compilateur compilera le fichier autreModule c il aura connaissance des d clarations contenues dans monModule h Par exemple il aura connaissance des prototypes des fonctions de monModule pas de leur corps qui est dans monModule cc et sera donc a m me de v rifier si les appels de ces fonctions sont syntaxiquement corrects Il v rifiera donc typiquem
5. nipulation des listes chain es par exemple un autre aux entr es sorties pour un type de fichier un autre pourrait regrouper les fonctions implantant un algorithme donn etc 2 Role des fichiers c et h On consid re ici un module monModule donc deux fichiers monModule h et monModule c Dans le fichier source monModule c du module on crira le code source du module instanciation des variables globales ventuelles corps de toutes les fonctions du module Le fichier header monModule h du module contiendra lui tout ce que le compilateur doit conna tre pour lorsqu on compile du code qui utilise les fonctionnalit s du module monModule En d autres termes le fichier header contient non pas les fonctionnalit s du module monModule qui sont elles dans le code source du fichier c mais uniquement le mode d emploi de ces fonctionnalit s mode d emploi dont le compilateur doit tre inform lorsqu on utilise ces fonctionnalit s par exemple dans le code source c d un autre module qui utilise monModule Le fichier monModule h regroupera donc en particulier e les d finitions des types publics du module monModule e les prototypes ou signatures des fonctions publiques du module e les d clarations d existence des variables globales publiques instanci es par le module Vs INP Fiche informatique programmation en C phelma Par public ont entend ici qu il faut pouvoir manipuler pour utiliser le
6. oat im COMPLEXE T prototype des fonctions publiques de monModule void trier liste LISTE T liste void conjuguer complexe COMPLEXE T p unComplexe endif Grenobte Ml Fiche informatique programmation en C phelma Exemple de fichier source c pour monModule fichier monModule c inclusion des librairies standards include lt stdio h gt inclusion du header de monModule pour connaitre les types qui y sont d clar s et verifier les prototypes include liste h inclusion des autres headers du projet dont on a besoin include unAutreModule h instanciation et initialisation des variables globales int uneVariableGlobale 0 LISTE T uneVariableListeGlobale NULL definition des fonctions void trier liste LISTE T liste corps de la fonction fy void conjuguer complexe COMPLEXE T p unComplexe corps de la fonction 5 Quelques cas particuliers de fichier header Parfois on pourra crire un fichier h sans ficher c correspondant Cela est par exemple tr s utile lorsque on veut d clarer un ou des types qui seront ensuite utilis s dans de nombreux fichiers sources On pourra alors cr er un fichier types h dans lequel on fera figurer la d claration des types fichier types h ifndef TYPES H_ define TYPES H_ D claration des principaux types du projet typedef double MesDouble t typedef struct float x y MesComplexes t
7. s monModule h Va INP Fiche informatique programmation en C phelma Primitive define d un fichier h Un fichier header h d bute toujours par un couple de primitive de pr compilation ifndef IDENTIFIANT UNIQUE define IDENTIFIANT UNIQUE o IDENTIFIANT UNIQUE est un identifiant choisi arbitrairement mais qui doit tre unique et ifndef signifie if not defined endif Cela permet au compilateur de s assurer que le contenu du fichier h ne sera inclus qu une seule et unique fois lors de la compilation En g n ral on choisit pour IDENTIFIANT UNIQUE quelque chose qui voque le nom du module Par exemple pour le module monModule on pourrait choisir MON MODULE H 4 Exemple de fichier header h et c Exemple de fichier header h pour monModule fichier monModule h ifndef MON MODULE H define MON MODULE H pour connaitre le type LISTE T d clar dans liste h et utilis dans les prototypes des fonctions de monModule h include liste h declaration d existence de variables globales publiques de monModule Notez que ce n est pas une instantiation mais du fait de l utilisation du mot cl extern juste une d claration d existence de la variable L instanciation est elle faite dans le c du module extern int uneVariableGlobale extern LISTE T uneVariableListeGlobale declaration des types publics de monModule typedef struct complex float re fl
Download Pdf Manuals
Related Search
Related Contents
TOYOTA CHILE S W \{ Beamformer / Device Betriebsanleitung Operating Instructions Gardena 01998-20 Copyright © All rights reserved.
Failed to retrieve file