#directive

 

xlC –P fic.C Þ

 

  

fic.C                   PREPRO                      fic.i

 

fic.i

   les directives (#) ont été gérées (substitution de texte)

   texte lisible

 

Compiler

xlC –C fic.C

Compiler + éditer les liens

xlC  –o nomExé   fic.C

 

#include <fic.h>

Þ recherche dans le répertoire std

 

Lancer le préprocesseur avec un autre répertoire de recherche

xlC –P –InomRép  fic.C

 

En général :

#include "adresse du fichier à inclure"

 

../  Þ remonte d'un répertoire

 

xlC –P –DnomCte  fic.C

rend vrai #define nomCte

 

Attn, pour éviter les inclusions multiples : systématiquement encadrer les fichier en-tête (.h)

#ifndef _H_FIC

#define _H_FIC

#endif

 

Attn aux parenthèses dans

#define carre(x) (x)*(x)

 

Attn : les macros ne sont pas des fonctions

 

 

macrogénérations de code

fonctions (inline)

gestion niveau

préprocesseur

compilateur

influence sur le calcul

non : substitution de texte

oui : un type est retourné

 

Attn aux #include "truc.h" :

le fichier doit être dans le répertoire courant

ou bien mettre le chemin

ou bien préciser à la commande –IrépertoireOùChercher

 

-P Û passage préprocesseur

   aucun contrôle

   substition de texte uniquement

Erreurs

   grandeurs non définies (pas de #define)

   .h inconnus (adresse incorecte ou pas dans le répertoire courant)

 

.i  Û module précompilé

#define CTE

les ctes st remplacées

#include <"fic.h>"

remplacées par le contenu du fic.h   i.e. prototypes de fonctions

 

compilateur : contrôle

 

.h = fichiers en-têtes

   contient que les prototypes, pas les défnitions de fonctions (® modules objets reliés à l'édition des liens)


Compression et archivage

 

Archivage = mise ensemble de documents

Compression = réduction de la taille mémoire des données par l'exécution d'un algo de compression

 

Archiver

tarcvf  fic.tar  liste_truc_à_mettre

c= create

 

Extraire

tarxvf  fic.tar

x = extract

 

Comprimer un .tar

gzip  fic.tar

 

Décomprimer un .tar

gzip –d  fic.tar

d = decompress

 

xlC  –o nomExé  liste_prog.C

Þ  crée l'exé à partir de +s sources

 

xlC  -c  liste_prog.C

Þ crée le module objet (.o) correspondant pour chacun des .C

 

xlC  -o nomExé  liste_modules.o

 

Pour les problèmes de déclarations, mieux vaut corriger le principal que les fonctions : le module objet (code) de la fonction peut servir à +s endroits

 

 

Bibliothèques

 

ar –q chemin/libbib.a  liste_modules.o

Þ crée bib, bibliothèque contenant les modules objets

 

ar –t chemin/libbib.a

Þ donne les modules objets contenus dans bib

 

ar –q  chemin/libbib.a  module_à_rajouter.o

Þ rajoute le module à la bibli bib

 

xlC  –o nomExé  prog.C  –Lchemin –lbib

Þ crée l'exé avec la bibli bib

 

Chemins

 

$HOME  Û  home directory

 

 ../  Û remonte d'un répertoire

 

 .   Û  ici

 

Déroulement du prog

Appel fonction  f(x,y)    (compilateur : ¬)

   pile LIFO ¬ y

   pile LIFO ¬ x

   pile LIFO ¬ espace réservé pour le résultat final (type considéré)

pile LIFO ¬ adr de retour

Exécution fonction

   lecture de la pile pour x et y

   pile (case réservée) ¬ résultat (type pris en compte)

   cpt ordinal ¬ adr retour (pile)

Avantage  : le résultat n'a pas de taille limitée (en dehors que par le type)

Fonctions récursives : grandes piles mais taille limitée Þ pb