Cours
APIA
Salima
Hassas
Plan
• Retour
sur
les
bases
de
C
– Préprocesseur
– E/S
:
scanf
et
prin=
• Types
complexes
– Structures
et
unions
• ProgrammaBon
modulaire
• AllocaBon
dynamique
– Tableaux
et
matrices
dynamiques
• ManipulaBon
de
chaines
de
caractères
• Fichiers
Préprocesseur
• Avant
la
compilaBon
proprement
dite,
le
compilateur
fait
passer
«
le
contenu
du
fichier
à
compiler
»
(Fichier
source)
par
un
programme
:
-‐
Le
préprocesseur
–
qui
peut
transformer
le
texte,
en
interprétant
certaines
direcBves
• Son
Rôle
:
interpréter
les
lignes
qui
commencent
par
#
en
1ère
ligne
direcBves
de
pré-‐processing
– Inclusion
de
fichiers
#include
– La
subsBtuBon
:
#define
– DéfiniBon
condiBonnelle
#ifdef,
#else,
#ifndef,
#endif
Remarque
On
peut
visualiser
la
sorBe
du
pré-‐processeur
avant
l’étape
de
compilaBon
proprement
dite
en
uBlisant
l’opBon
-‐E
à
la
compilaBon
Préprocesseur
• Inclusion
de
fichier
#include
– Permet
de
remplacer
la
ligne
contenant
le
#include
dans
le
fichier
source
par
le
contenu
du
fichier
inclus
– UBle
dans
dans
le
cas
ou
l’on
souhaite
uBliser
dans
un
fichier,
des
déclaraBons
définies
dans
un
autre
fichier
– Nécessaire
dans
le
cas
d’uBlisaBon
des
types
ou
foncBons
externes
au
fichier
courant
• UBlisaBon
– #include
si
fichier
existant
dans
une
librairie
standard
(stocké
sous
/usr/etc
ou
emplacement
donné
par
–I
à
la
compilaBon)
– #include
«
monFichier
»
si
le
fichier
est
stocké
localement
Préprocesseur
/*
Exemple.c*/
#include
void
main()
{
int
n;
scanf(«
%d
»,
&n);
prin=
(«
Coucou,
n=%d
»);
}
Préprocesseur
/*
Exemple.c*/
#include
void
main()
{
int
n;
scanf(«
%d
»,
&n);
prin=
(«
Coucou,
n=%d
»);
}
Remplacé
par
Stdio.h
Déclara'on
de
:
scanf
Déclara'on
de
:
prin2
….
Préprocesseur
• La
subsBtuBon
symbolique
#define
– Permet
de
remplacer
dans
le
fichier
courant
une
chaine
de
caractères
par
une
autre
chaine
de
caractères
Ex:
#define
taille
100
Remplace
dans
tout
le
fichier
la
chaine
«
taille
»
par
la
chaine
«
100
»
– UBle
dans
dans
le
cas
ou
l’on
souhaite
définir
des
constantes
avant
la
compilaBon
(ex:
fixer
la
taille
d’un
tableau)
– UBle
pour
pouvoir
changer
facilement
cehe
valeur
dans
le
programme
=>
changer
uniquement
la
ligne
du
#define
Préprocesseur
/*
Exemple.c*/
#define
N
10
void
main()
{
int
i,
S=0;
for
(
i=1;
i<=N;i++)
S+=i;
prin=(«
S=%d
»,
S);
}
Préprocesseur
/*
Exemple.c*/
#define
N
10
void
main()
{
int
i,
S=0;
for
(
i=1;
i<=N;i++)
S+=i;
prin=(«
S=%d
»,
S);
}
void
main()
{
int
i,
S=0;
for
(
i=1;
i<=10;i++)
S+=i;
prin=(«
S=%d
»,
S);
}
N
remplacé
par
10
Avant
la
compilaBon
AhenBon!!
void
main()
{
int
i,
S=0;
const
int
N=10;
for
(
i=1;
i<=N;i++)
S+=i;
prin=(«
S=%d
»,
S);
}
void
main()
{
int
i,
S=0;
for
(
i=1;
i<=10;i++)
S+=i;
prin=(«
S=%d
»,
S);
}
N
est
une
variable
de
valeur
constante
Ne
pas
confonde
#define
et
const
IniBalisée
à
10
à
la
compilaBon
Préprocesseur
• Préférer
l’uBlisaBon
de
const
à
#define
pour
la
définiBon
de
constantes
Syntaxe
const
type
nom_variable=valeur
Ex:
const
int
Taille_Max=10;
const
MSG
=
«
hello
»
const
struct
date
d={12,
10,
2008}
– Avantages
• la
portée
est
limitée
au
bloc
où
la
constante
est
définie
:
un
bloc,
une
foncBon
ou
l’ensemble
du
programme
• la
déclaraBon
de
type
est
contrôlée
par
le
compilateur
Préprocesseur
• La
subsBtuBon
symbolique
#define
– Permet
de
remplacer
dans
le
fichier
courant
une
chaine
de
caractères
par
une
autre
chaine
de
caractères
-‐
DéfiniBon
de
macro
Syntaxe
#define
nom_macro(X,Y,..)
(code)
Ex:
#define
SOM(X,Y)
(X+Y)
– UBle
dans
le
cas
d’un
code
de
peBte
taille
appelé
souvent
• Min,
max,
valeur
absolue,
.etc.
– Moins
coûteux
que
la
définiBon
d’une
foncBon
Préprocesseur
/*
Exemple.c*/
#define
MIN
(X,Y)
(X
本文档为【Preprocesseur】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。