J'ai fait l'exemple en Java mais je pense (pas testé) que cela fonctionne dans d'autres (tous?) Langues.Comment fonctionne la compilation des dépendances circulaires?
Vous avez 2 fichiers. Tout d'abord, M.java
:
public class MType {
XType x;
MType() {x = null;}
}
En second lieu, un autre fichier (dans le même répertoire), XType.java
:
public class XType {
MType m;
public XType(MType m) {this.m = m;}
}
Ok c'est une mauvaise programmation, mais si vous exécutez javac XType
il compile: compile même MType
parce que XType
besoins il. Mais ... MType
a besoin de XType
... comment ça marche? Comment le compilateur sait-il ce qui se passe?
Je voudrais savoir comment le compilateur (javac ou tout autre compilateur que vous connaissez) gère cette situation, pas comment l'éviter.
Je demande parce que j'écris un précompilateur et je voudrais gérer cette situation.
Alors quand il compile le deuxième fichier le compilateur sait déjà ce que le premier est? –
@Fabio - Chaque passage du compilateur traite tous les fichiers regroupant les informations nécessaires au passage suivant. – ChrisF