La modularité en C - IN104 : Introduction à la conduite de projets ...

De
Publié par

Maîtrise, Supérieur, Maîtrise (bac+4)
  • mémoire - matière potentielle : figure
  • mémoire - matière potentielle : dynamique
  • mémoire - matière potentielle : aux symboles
  • mémoire - matière potentielle : extern const
  • mémoire - matière potentielle : espaces
  • cours - matière potentielle : partir
  • mémoire
  • exposé
La modularité en C IN104 : Introduction à la conduite de projets informatiques en C Anthony Truchet École Nationale Supérieure de Techniques Avancées — ParisTech 13 avril 2011 Anthony Truchet (ENSTA-ParisTech) La modularité en C CC BY-NC-SA 2.0 1 / 43 Plan 1 Introduction 2 Séparation interface — implémentation 3 Les unités de compilation en C 4 Le développement : au delà du codage 5 Conclusion Anthony Truchet (ENSTA-ParisTech) La modularité en C CC BY-NC-SA 2.0 2 / 43 Introduction Plan 1 Introduction Retour sur la modularité De l'exercice au projet 2 Séparation interface — implémentation 3 Les unités de compilation en C 4
  • découverte progressive des étapes de la compilation
  • compilation
  • vectr2
  • modularité
  • partage des fonctionnalités communes→
  • pré-processeur
  • name nom des bibliothèques -lpath emplacement des bibliothèques -ipath emplacement des headers —
  • pile pile
  • codes
  • code
  • bibliothèque
  • bibliothèques
Publié le : mercredi 28 mars 2012
Lecture(s) : 82
Source : ensta-paristech.fr
Nombre de pages : 11
Voir plus Voir moins
La modularit en C
Les units de compilation en C
Anthony Truchet (ENSTA-ParisTech)
La modularit en C
modularit au projet
Conclusion
Anthony Truchet
La modularit en C IN104 : Introduction À la conduite de projets informatiques en C
13 avril 2011
1 / 43
CC BY-NC-SA 2.0
Ècole Nationale Suprieure de Techniques Avances — ParisTech
3 / 43
CC BY-NC-SA 2.0
La modularit en C
Introduction
Introduction Retour sur la De l’exercice
er Raisons de conception(cf. 1 CM) Sparationinterface–implmentation Dcoup(l)ageproducteur–consommateurde la fonctionnalit Maïtrise de la complexit er Raisons d’organisationCM)(cf. 1 Dveloppement en quipe Rutilisabilit Raisons technologiques(au dbut. . .) Taille des fichiers sources Temps de compilation Unit de documentation et de deploiment Dcoupage d’un progamme en plusieurs units physiques (fichiers) qui prsentent une unit logique (modules).
La modularit : pourquoi ?
Anthony Truchet (ENSTA-ParisTech)
Anthony Truchet (ENSTA-ParisTech)
4 / 43
CC BY-NC-SA 2.0
La modularit en C
4
Introduction
3
Les units de compilation en C
Plan
Introduction
1
Plan
Le dveloppement : au delÀ du codage
Sparation interface — implmentation
1
3
2
4
5
Le dveloppement : au delÀ du codage
2
Sparation interface — implmentation
5
Anthony Truchet (ENSTA-ParisTech)
2 / 43
CC BY-NC-SA 2.0
Retour sur la modularit
Conclusion
Introduction
Retour sur la modularit
Modularit : les possibilits du C
Origine du C Entre 1972 et 1978 D. Ritchie & B. Kernighan Pour dvelopper UNIX Proche de la machine « assembleur portable »
Les types: struct. de donnes Les fonctions: struct. de contrÔle Les units de compilations: notions C de « module »
Structuration en C Une expressivit rduite. Relativement peu d’abstraction et d’encapsulation. . . . . . mais bien assez pour commencer !
Anthony Truchet (ENSTA-ParisTech)
La modularit en C
Introduction
De l’exercice au projet
Un exemple de code non modulaire Listing 1 – Code d’exemple de dpart # include< stdio .h >
typedef struct{ doublex; doubley; } VectR2 ;
VectR2 VectR2_add ( VectR2 u1 , VectR2 u2 ) { VectR2 u; u.x = u1 .x + u2 .x ; u.y = u1 .y + u2 .y ; returnu; }
intmain (intargc ,const char* argv []) { VectR2 u1 = { 1.0 , 2.0 }; VectR2 u2 = { 0.0 , -1.0 };
VectR2 u = VectR2_add (u1 , u2 ); printf (" u1 + u2 = (%g , %g) \n" , u.x , u.y);
return0; }
Anthony Truchet (ENSTA-ParisTech)
La modularit en C
CC BY-NC-SA 2.0
CC BY-NC-SA 2.0
5 / 43
7 / 43
Introduction
Dmarche de ce cours
De l’exercice au projet
Partir de ce que l’on connait en IN101. Appronfondir quelques aspects du C pour. . . . . . introduire unesparation interface — implmentation. Comprendre ce qu’il se passevraiment. .À la compilation. . . . pour arriver aux units de compilations et bibliothques. Enfin, prendre soin de ladocumentation. . . . . . et de son environnement de travail.
Anthony Truchet (ENSTA-ParisTech)
La modularit en C
Introduction
De l’exercice au projet
Compilation opaque et non modulaire
vect-1.c
GCC
vect1
gcc-Wallvect-1.c -o vect-1
CC BY-NC-SA 2.0
Figure:Compilation opaque et non modulaire
Anthony Truchet (ENSTA-ParisTech)
La modularit en C
CC BY-NC-SA 2.0
6 / 43
8 / 43
Plan
1
2
3
4
5
Sparation interface — implmentation
Introduction
Sparation interface — implmentation Les fonctions Le pr-processeur C
Les units de compilation en C
Le dveloppement : au delÀ du codage
Conclusion
Anthony Truchet (ENSTA-ParisTech)
La modularit en C
Sparation interface — implmentation
La dclaration des fonctions
Les fonctions
Sparation interface—implmentation Implmentation =Dfinition,Dclaration= Interface Dclarationpartageentre fournisseur (code appel) et utilisateur (code appelant).
CC BY-NC-SA 2.0
Dfinition: prototype + corps de fonction Implmente la fonctionnalit Gnre le code excutable de sous-programme Dclaration: protype +point-virgule Interface entre code appelant et appel Permet de gnrer le code excutable d’appel NB!: Rend possible les fonctions mutuellement rcursives
Anthony Truchet (ENSTA-ParisTech)
La modularit en C
CC BY-NC-SA 2.0
9 / 43
11 / 43
Sparation interface — implmentation
Les « fonctions » en C
Les fonctions
Appel de sous-programme avec des arguments Valeur de retour : pas toujours ou ignore Peut raliser desactions Peut modifier ses arguments :passage par rfrence Peut partager des valeurs avec d’autres fonctions : notions devariables globales Peut donc avoir deseffets de bords Trs diffrent de l’objet mathmatique « fonction »
Anthony Truchet (ENSTA-ParisTech)
La modularit en C
Sparation interface — implmentation
Les fonctions
La dclaration des fonctions (exemple)
VectR2
Listing 2 – Dclaration de VectR2_add VectR2_add ( VectR2 u1 , VectR2 u2 );
Listing 3 – Dfinition de VectR2_add VectR2 VectR2_add ( VectR2 u1 , VectR2 u2 ) { VectR2 u; u.x = u1 .x + u2 .x ; u.y = u1 .y + u2 .y ; returnu; }
VectR2 u = printf (" u1
Listing 4 – Utilisation de VectR2_add VectR2_add (u1 , u2 ); + u2 = (%g , %g) \n" , u.x , u.y);
Anthony Truchet (ENSTA-ParisTech)
La modularit en C
CC BY-NC-SA 2.0
CC BY-NC-SA 2.0
10 / 43
12 / 43
Anthony Truchet (ENSTA-ParisTech)
La modularit en C
VectR2 u = printf (" u1 return0;
/*DÉclaration : prototype+point-virgule*/ VectR2 VectR2_add ( VectR2 u1 , VectR2 u2 );
main-1
La dclaration des fonctions (suite)
Sparation interface — implmentation
CC BY-NC-SA 2.0
16 / 43
14 / 43
CC BY-NC-SA 2.0
Sparation interface — implmentation
La modularit en C
La modularit en C
gcc -Wall VecteurR2-1.c main-1.c -o main-1
15 / 43
main-1.c
La modularit en C
argc ,const u1 .x = 1.0; u2 .x = 0.0;
char* argv []) { u1 .y = 2.0; u2 .y = -1.0;
/*DÉfinition : prototype+corps de la fonction*/ VectR2 VectR2_add ( VectR2 u1 , VectR2 u2 ) { VectR2 u; u.x = u1 .x + u2 .x ; u.y = u1 .y + u2 .y ; returnu; }
}
intmain (int VectR2 u1 ; VectR2 u2 ;
CC BY-NC-SA 2.0
Le dcoup(l)age en modules : producteur Listing 5 – VecteurR2-1.h /*DÉfinition des types publics*/ typedef struct{ doublex; doubley; } VectR2 ;
Les fonctions
CC BY-NC-SA 2.0
Les fonctions
VectR2_add (u1 , u2 ); + u2 = (%g , %g) \n" ,
Listing 7 – main-1.c < stdio .h > /*Header standard :<>*/ " VecteurR2 -1. h" /*Interface partagÉe avec l’implÉm.*/
VecteurR2-1.h
VecteurR2-1.c
GCC
Figure:Compilation opaque et modulaire
Recoller les morceaux dans main-1.c Dclaration :?Comment appeler ,Quoi appeler ? Premire approche : laisser GCC se dbrouiller magiquement.
Anthony Truchet (ENSTA-ParisTech)
Importance des#include C’estunedirective de pr-processeur. Mais c’est quoi lepr-processeur?
Sparation interface — implmentation
# include # include
u.x ,
Dcoup(l)age
Dclarationpartageentre code appel et code appelant. Dclaration dans unheaderinclus par l’appelant et l’appel.
producteur—consommateur
Cration d’un « module »VecteurR2(v1) : InterfaceVecteurR2-1.h: lments « publics » Dclaration des fonctions Dfinition des types ImplmentationVecteurR2-1.c(inclutVecteurR2-1.h) Implmentation des fonctions Dfinitions (types et fonctions) prives Utilisationmain-1.c(inclutVecteurR2-1.h. .)et .
13 / 43
Anthony Truchet (ENSTA-ParisTech)
Anthony Truchet (ENSTA-ParisTech)
Sparation interface — implmentation
Les fonctions
u.y);
Le dcoup(l)age en modules : compilation
Les fonctions
Le dcoup(l)age en modules : consommateur
Listing 6 – VecteurR2-1.c # include" VecteurR2 -1. h" /*Header du projet : guillemets*/
Ètapeprliminairede la compilation Change le code source auniveau texte Les directives commencent par# Manipule dessymboleset desmacros
Sparation interface — implmentation
Le prprocesseur
VecteurR2-1.h
Le pr-processeur C
17 / 43
GCC∙ ∙ ∙
VecteurR2-1.i
GCC
VectR2 VectR2_add ( VectR2 u1 , VectR2 u2 ) { VectR2 u; u.x = u1 .x + u2 .x ; u.y = u1 .y + u2 .y ; returnu; }
19 / 43
CC BY-NC-SA 2.0
gcc-EVecteurR2-1.c -o VecteurR2-1.i
Le pr-processeur C
Anthony Truchet (ENSTA-ParisTech)
Sparation interface — implmentation
18 / 43
CC BY-NC-SA 2.0
Modularit en C : premier bilan
La modularit en C
extern const;VectR2 VectR2_V #VecteurR2 .h"45 " VectR2 VectR2_add ( VectR2 u1 , VectR2 u2 ); #VecteurR2 .h"56 " doubleu);VectR2_norme ( VectR2 #2 " 2VecteurR2 -1. c"
Ex. d’utilisation des directives de pr-processeur Dfinir des constantes :#define MY_PI 3.14 Pas de point-virgule ! Ce n’est pas une instruction. Compilation conditionnelle :#if ...[#else ...] #endif Bien d’autres utilisations avances. . . Desprintfde mise au point dsactivables
Anthony Truchet (ENSTA-ParisTech)
Figure:Appel explicite du pr-processeur
VecteurR2-1.c
CC BY-NC-SA 2.0
La modularit en C
Sparation interface — implmentation
CC BY-NC-SA 2.0
Le pr-processeur C
20 / 43
Ex. pr-processeur : dbogage propre
Anthony Truchet (ENSTA-ParisTech)
#define MYDEBUG 1 ( ou plutÔt À la compilation :gcc-DMYDEBUG=1. . . ) ... #ifdef MYDEBUG fprintf(stderr, "Debug %s (l. %d) : %s", __FILE__, __LINE__, message); #endif
Module: producteur d’une fonctionnalit Interface: « contrat »entre producteur et consommateur headermodule.havec : dfinition des types et dclarationdes fonctions « publics », i.e. exposs À l’utilisateur. Implmentation:module.cqui inclutmodule.h Utilisation: consommateur de la fonctionnalit moduleOuProgramme.cqui inclutmodule.het doit tre « compil avec »module.c.
La modularit en C
La modularit en C
extern constVectR2 VectR2_U ;
Le pr-processeur C
Sparation interface — implmentation
Appel explicite du pr-processeur : le rsultat Listing 8 – Rsultat du pr-processeur #1 " VecteurR2 -1. c" #1 " <built -in >" #1 " < command - line >" #1 " VecteurR2 -1. c" #1VecteurR2 .h" 1 " #VecteurR2 .h"26 " typedef struct{ doublex; doubley; } VectR2 ;
Anthony Truchet (ENSTA-ParisTech)
Apports et limitations +Sparation interface — implmentation +Division logique et physique du source (taille des fichiers, travail en quipe, . . .) -Dcouplage producteur — consommateur partiel -Compilation trs lourde pour modification mineure
Plan
1
2
3
4
5
Introduction
Les units de compilation en C
Sparation interface — implmentation
Les units de compilation en C Compilation — et donc utilisation — spare Le processus de compilation Bibliothques logicielles Modularit et espaces mmoire
Le dveloppement : au delÀ du codage
Conclusion
Anthony Truchet (ENSTA-ParisTech)
La modularit en C
Les units de compilation en C
CC BY-NC-SA 2.0
Compilation — et donc utilisation — spare
Le problme des inclusions multiples
Header inclut par l’utilisateuretle producteur On ne maïtrise pas l’utilisation du module que l’on produit. . . Les types sont dclars plusieurs fois :erreur de compilation!
VecteurR2.h: dfinit le typeVectR2 Rect2D.h: dfinit le typeRect2D . . . et inclut doncVecteurR2.h toto.cinclutRect2D.hetVecteurR2.h Le typeVectR2est dfinit deux foix : erreur À la compilation detoto.c!
Anthony Truchet (ENSTA-ParisTech)
La modularit en C
# include" VecteurR2 .h" typedef struct{ VectR2 origine ; VectR2 taille ; } Rect2D_t ;
# include" VecteurR2 .h" ... # include" Rect2D .h"
CC BY-NC-SA 2.0
21 / 43
23 / 43
Les units de compilation en C
Compilation — et donc utilisation — spare
Qu’est-ce que la compilation spare ?
Motivation physique: Modification mineure;recompilation complte. Partage des fonctionnalits communesbibliothque. Motivation logique: Producteur d’un module,consommateur du module. Producteur ne maïtrise pasl’utilisationdu module. Consommateur ne maïtrise pasle codedu module. ex.Bibliothques spcialises : multimdia, calcul, pilotes. . . Ide simple(en thorie) : Compiler sparment, puis relier, les modules et, enfin, lier le tout aux biliothques tirces. En C : assez dlicat en pratique . . . Dcouverte progressive des tapes de la compilation.
Anthony Truchet (ENSTA-ParisTech)
La modularit en C
Les units de compilation en C
CC BY-NC-SA 2.0
Compilation — et donc utilisation — spare
Comment viter les inclusions multiples ?
Listing 9 – Gardes de double inclusion /* Les gardes de double inclusion */ # ifndefVecteurR2_H_INCLUDED # defineVecteurR2_H_INCLUDED VectR2 VectR2_add ( VectR2 u1 , VectR2 u2 ); # endif/* VecteurR2_H_INCLUDED */
On ne les vite pas : chaqueheaderest responsable de ses definitions. DjÀ inclusdfinit unsymbole de pr-processeur Symbole de pr-processeur dfinitheadervide ! Sinon : dfinition du symbole puis contenu normal. . .
Anthony Truchet (ENSTA-ParisTech)
La modularit en C
CC BY-NC-SA 2.0
22 / 43
24 / 43
GCC
VecteurR2-1.o
La modularit en C
Les units de compilation en C
28 / 43
CC BY-NC-SA 2.0
Le processus de compilation
Les units de compilation en C
Les units de compilation en C
Compilation et assembleur Compilateur: langage de « haut »niveaulangage machine Assembleur: langage machinecode « objet » ( binaire excutable=instructions processeur) Èditeur de liens:plusieurs« objets »unprogramme ou biblio.
CC BY-NC-SA 2.0
Le processus de compilation
25 / 43
CC BY-NC-SA 2.0
Bibliothques logicielles
La modularit en C
26 / 43
Anthony Truchet (ENSTA-ParisTech)
Listing 10 – Version assembleur de VectR2_add .file " VecteurR2 -1 .c " .text .p2align 4 , ,15 .globl VectR2_add .typeVectR2_add , @function VectR2_add : pushl %ebp movl %esp, %ebp fldl 12(%ebp) faddl 28(%ebp) movl 8(%ebp) , %eax fldl 20(%ebp) faddl 36(%ebp) fstpl 8(%eax) fstpl (%eax) popl %ebp ret$4 .size VectR2_add , . - VectR2_add .ident " GCC : ( Ubuntu 4 .4.3 -4 ubuntu5 ) 4 .4.3 " .section .note.GNU - stack ,"" , @progbits
gcc-cVecteurR2-1.c
Anthony Truchet (ENSTA-ParisTech) La modularit en CCC BY-NC-SA 2.0 Figure:Processus de compilation complet
VecteurR2-1.s
GCC
gcc-SVecteurR2-1.c
Les units de compilation en C
VecteurR2-1.c
Anthony Truchet (ENSTA-ParisTech)
Processus de compilation complet
VecteurR2-1.h
Èdition de liens Noms des fonctions et variables dfinies « ailleurs »symboles. Èditer les liens = associer uneadresse mmoireaux symboles. gcc -Wall VecteurR2.o main.o -o main GCC (pilote de compilation) fait lier l’excutable final Àld.
Figure:Compilation
AperÇu de compilation en assembleur
Le processus de compilation
27 / 43
Figure:Compilation : dition de liens Anthony Truchet (ENSTA-ParisTech) La modularit en C
Les units de compilation en C
Bibliothques logicielles
Processus de compilation : dition de liens
Exemple : la bibliothque mathmatique Pour la normeVecteurR2.cutilise la fonctionsqrtdans la bibliothque mathmatique standard (libm.so/.a/.dll).
Options degccpour l’utilisation de bibliothques : -llib_namenom des bibliothques -Lpathemplacement des bibliothques -Ipathemplacement des headers —!À la compilation gcc -Wall VecteurR2.o main.o-lm-o main
Bibliothque « non-standard » Penser aux options-Iet-L— ou aux rglages correspondants !
Anthony Truchet (ENSTA-ParisTech)
La modularit en C
Les units de compilation en C
Modularit et espaces mmoire
Les fonctions, les donnes et la mmoire
CC BY-NC-SA 2.0
Figure:Modle mmoire et structure de la pile
29 / 43
Pile (stack) : variables locales (niveau fonction) Tas (heap) : variables dynamiques Donnes statiques : variables « globales » & donnes initialises
Anthony Truchet (ENSTA-ParisTech)
La modularit en C
CC BY-NC-SA 2.0
31 / 43
Les units de compilation en C
Modularit et espaces mmoire
La mmoire La resource principale en C. Variable « automatique » :localeÀ un appel de fonction. Mmoiredynamique: alloue (malloc) et libre (free). Variableglobale: dclare hors de toute fonction. GlobaleÀ quoi?? au module ? au programme
Figure:Modle d’ordinateur de von Newman
Anthony Truchet (ENSTA-ParisTech)
La modularit en C
Les units de compilation en C
Modularit et espaces mmoire
Espaces mmoire et dclarations
Symboles « globaux » : module ou programme ? Niveau fichier : visibilit par l’diteur de liens : tout le programmedclarationextern;+ dfinition seulement le moduledclarationstatic.
CC BY-NC-SA 2.0
Dclaration de var. « externes »(header) : n’alloue pas de mmoire externconstVectR2 VectR2_U; Dfinition de var. « externes »: alloue (& initialise) la mmoire + l’expose aulinker constVectR2 VectR2_U = {1.0, 0.0}; Dfinition de var. « internes »: alloue la mmoire – ne l’expose pas staticcharbuffer[BUFFER_SIZE] = "..."; Quelques autres: statique & locale, en registre, volatile
Anthony Truchet (ENSTA-ParisTech)
La modularit en C
CC BY-NC-SA 2.0
30 / 43
32 / 43
Le dveloppement : au delÀ du codage
La modularit en C
4
L’environnement de dveloppement
Le dveloppement : au delÀ du codage
L’environnement de dveloppement
Plan
CC BY-NC-SA 2.0
Dvelopper, c’est : Concevoircf. CM 1 ( + outils de gnie logiciel) Documentercf. section 2 Coder!cf. IN101 & CM 3 + exprience Construirecf. section 1 Testercf. CM 3 Mettre au pointcf. CM 4 Dployer. . .
CC BY-NC-SA 2.0
Le dveloppement : au delÀ du codage
36 / 43
35 / 43
Points communs Notion de projet : sources + rgles de construction Dclarer les sources qui constituent le projet Dclarer les dpendances envers modules et bibliothques Configurer l’emplacement des bibliothques etheaderstiers
Dvelopper une application
5
Le dveloppement : au delÀ du codage
La modularit en C
La modularit en C
Anthony Truchet (ENSTA-ParisTech)
2
1
3
Sparation interface — implmentation
Les units de compilation en C
Anthony Truchet (ENSTA-ParisTech)
Environnement de dveloppement Un « co-systme » d’outils pour assister dans ces táches.
Figure:Capture d’cran de Code : :Blocks
33 / 43
Anthony Truchet (ENSTA-ParisTech)
Introduction
Construire une application Compiler les diffrents modules . . . . . . dans le bon ordre et avec les bonnes options. . . . . . et en se liant avec les bibliothques. Dans l’« co-systme » traditionnel UNIX : nb. utilitaires (make,makedepend,pkgconfig,autotools. . .) Support d’un environnement graphique moderne :Code::Blocks (XCode, Anjuta, KDevelop, Visual Studio, Eclipse, . . .)
Le dveloppement : au delÀ du codage L’environnement de dveloppement La documentation
Conclusion
CC BY-NC-SA 2.0
La modularit en C
CC BY-NC-SA 2.0
34 / 43
Anthony Truchet (ENSTA-ParisTech)
Code : :Blocks
Le dveloppement : au delÀ du codage
La documentation
De l’importance de la documentation
Valeur d’un code : seulement si il est utilisable ! La fiabilit aprs, la performance en dernier. . . Interface : aussi un contrat avec ledveloppeur (Application Programming Interface— API ) La documentation extrmiste :Literate Programming
Doxygen : mieux documenter les sources A « Compilateur de doc. »vers HTML, LT X. .PDF, . E Utilise des commentaires spciaux :/*!*/ Un langage de balises dans les commentaires (maths, liens,. . .).
Anthony Truchet (ENSTA-ParisTech)
La modularit en C
Le dveloppement : au delÀ du codage
Doxygen : rsultat HTML
La documentation
CC BY-NC-SA 2.0
Figure:Doxygen HTML : fonction VectR2_add
Anthony Truchet (ENSTA-ParisTech)
La modularit en C
CC BY-NC-SA 2.0
37 / 43
39 / 43
Le dveloppement : au delÀ du codage
Doxygen : exemple
La documentation
Listing 11 – Doxygen : ex. pour les types /* ! * \ brief Le type de données qui représente un vecteur de R2 . * * On représente un vecteur de R2 par le couple de ses coordonées , * elles mêmes représentées par des double ( attention aux calculs approchés ). */ typedef struct{ doublex;Abscisses *//* !< doubley;/* !< Ordonnées */ } VectR2 ;
Listing 12 – Doxygen : ex. pour les fonctions /* ! * \ brief L ’ opération d ’ addition de deux vecteurs * * \ param u1 Le premier vecteur à additionner * \ param u2 Le second vecteur à additionner * \ return La somme de \c u1 et \c u2 */ VectR2 VectR2_add ( VectR2 u1 , VectR2 u2 );
Anthony Truchet (ENSTA-ParisTech)
La modularit en C
Le dveloppement : au delÀ du codage
Doxygen : rsultat HTML
La documentation
Figure:Doxygen HTML : type VectR2
Anthony Truchet (ENSTA-ParisTech)
La modularit en C
CC BY-NC-SA 2.0
CC BY-NC-SA 2.0
38 / 43
40 / 43
Le dveloppement : au delÀ du codage
Doxygen : rsultat HTML
La documentation
Figure:Doxygen HTML : fichier VecteurR2-2.c
Anthony Truchet (ENSTA-ParisTech)
Conclusion
La modularit en C
Conclusion
CC BY-NC-SA 2.0
En C : moduleunit de compilation. Interface.h— Implmentation.c Notions d’dition de lien pour construire son application. Penser À configurer les bibliothques tirces. IDE (Code::Blocks) gre la construction et . . . Essentiel de seDoxygÉner!pour avoir les ides claires
Et ensuite. . . Passage À la pratique avec le projet !
Anthony Truchet (ENSTA-ParisTech)
La modularit en C
CC BY-NC-SA 2.0
41 / 43
43 / 43
Plan
1
2
3
4
5
Introduction
Conclusion
Sparation interface — implmentation
Les units de compilation en C
Le dveloppement : au delÀ du codage
Conclusion
Anthony Truchet (ENSTA-ParisTech)
La modularit en C
CC BY-NC-SA 2.0
42 / 43
Soyez le premier à déposer un commentaire !

17/1000 caractères maximum.