Au moment de l'édition de liens, pour un identificateur donné,
n unités de compilation l'auront défini, p l'auront référencé, et
q auront demandé une mise dans le common.
Les contraintes sont les suivantes :
- -
- n doit valoir 0 ou 1 : au plus une unité de compilation doit
définir un nom ;
- -
- si n vaut 0, alors q ne peut être nul : il ne peut pas y
avoir que des références.
Voyons les choses sous l'angle de ce qui est autorisé.
On peut avoir :
- -
- une définition avec p (évent. 0) références, et q
(évent. 0) demandes de mise dans le common ;
- -
- p (évent. 0) références et q (non 0) demandes
de mise dans le common.
Ceci fait beaucoup de possibilités dont deux seulement sont « raisonnables » :
- -
- une définition avec que des références : on adhère strictement à la
méthode des réfs et des défs ;
- -
- que des demandes de mise dans le common : on adhère strictement à la
méthode du common.
Ces deux méthodes sont résumées dans le tableau suivant :
méthode |
unité de |
unité de |
... |
unité de |
|
compilation 1 |
compilation 2 |
... |
compilation n |
réfs défs |
int i = 0; |
extern int i; |
... |
extern int i |
common |
int i ; |
int i ; |
... |
int i ; |
Matthieu Moy
2017-02-08