Programmer en langage C
174
© Éditions Eyrolles
main ()
{
struct enreg x ;
....
}
fct ( ....)
{
struct enreg y, z ;
....
}
En revanche, il n’est pas possible, dans un fichier source donné, de faire référence à un modèle
défini dans un autre fichier source. Notez bien qu’il ne faut pas assimiler le nom de modèle
d’une structure à un nom de variable ; notamment, il n’est pas possible, dans ce cas, d’utiliser
de déclaration extern. En effet, la déclaration extern s’applique à des identificateurs
susceptibles d’être remplacés par des adresses au niveau de l’édition de liens. Or un modèle de
structure représente beaucoup plus qu’une simple information d’adresse et il n’a de signification
qu’au moment de la compilation du fichier source où il se trouve.
Il est néanmoins toujours possible de placer un certain nombre de déclarations de modèles de
structures dans un fichier séparé que l’on incorpore par #include à tous les fichiers source
où l’on en a besoin. Cette méthode évite la duplication des déclarations identiques avec les
risques d’erreurs qui lui sont inhérents.
Le même problème de portée se pose pour les synonymes définis par typedef. Les mêmes
solutions peuvent y être apportées par l’emploi de #include.
6 Transmission d’une structure en argument
d’une fonction
Jusqu’ici, nous avons vu qu’en C la transmission des argument se fait par valeur, ce qui implique une recopie de l’information transmise à la fonction. Par ailleurs, il est toujours possible
de transmettre la valeur d’un pointeur sur une variable, auquel cas la fonction peut, si besoin
est, en modifier la valeur. Ces remarques s’appliquent également aux structures (notez qu’il
n’en allait pas de même pour un tableau, dans la mesure où la seule chose qu’on puisse transmettre
dans ce cas soit la valeur de l’adresse de ce tableau).
6.1 Transmission de la valeur d’une structure
Aucun problème particulier ne se pose. Il s’agit simplement d’appliquer ce que nous connaissons
déjà. Voici un exemple simple :
Delannoy Livre.book Page 174 Mercredi, 6. mai 2009 4:26 16
174
© Éditions Eyrolles
main ()
{
struct enreg x ;
....
}
fct ( ....)
{
struct enreg y, z ;
....
}
En revanche, il n’est pas possible, dans un fichier source donné, de faire référence à un modèle
défini dans un autre fichier source. Notez bien qu’il ne faut pas assimiler le nom de modèle
d’une structure à un nom de variable ; notamment, il n’est pas possible, dans ce cas, d’utiliser
de déclaration extern. En effet, la déclaration extern s’applique à des identificateurs
susceptibles d’être remplacés par des adresses au niveau de l’édition de liens. Or un modèle de
structure représente beaucoup plus qu’une simple information d’adresse et il n’a de signification
qu’au moment de la compilation du fichier source où il se trouve.
Il est néanmoins toujours possible de placer un certain nombre de déclarations de modèles de
structures dans un fichier séparé que l’on incorpore par #include à tous les fichiers source
où l’on en a besoin. Cette méthode évite la duplication des déclarations identiques avec les
risques d’erreurs qui lui sont inhérents.
Le même problème de portée se pose pour les synonymes définis par typedef. Les mêmes
solutions peuvent y être apportées par l’emploi de #include.
6 Transmission d’une structure en argument
d’une fonction
Jusqu’ici, nous avons vu qu’en C la transmission des argument se fait par valeur, ce qui implique une recopie de l’information transmise à la fonction. Par ailleurs, il est toujours possible
de transmettre la valeur d’un pointeur sur une variable, auquel cas la fonction peut, si besoin
est, en modifier la valeur. Ces remarques s’appliquent également aux structures (notez qu’il
n’en allait pas de même pour un tableau, dans la mesure où la seule chose qu’on puisse transmettre
dans ce cas soit la valeur de l’adresse de ce tableau).
6.1 Transmission de la valeur d’une structure
Aucun problème particulier ne se pose. Il s’agit simplement d’appliquer ce que nous connaissons
déjà. Voici un exemple simple :
Delannoy Livre.book Page 174 Mercredi, 6. mai 2009 4:26 16
