Ich habe das Beispiel in Java gemacht, aber ich denke (nicht getestet), dass es in anderen (allen?) Sprachen funktioniert.Wie funktioniert das Kompilieren zirkulärer Abhängigkeiten?
Sie haben 2 Dateien. Zuerst M.java
:
public class MType {
XType x;
MType() {x = null;}
}
Zweitens eine andere Datei (im gleichen Verzeichnis), XType.java
:
public class XType {
MType m;
public XType(MType m) {this.m = m;}
}
Ok ist es schlechte Programmierung, aber wenn Sie javac XType
führen Sie es kompiliert: kompiliert sogar MType
weil XType
Bedürfnisse es. Aber ... MType
braucht XType
... wie funktioniert das? Woher weiß der Compiler, was passiert?
Ich würde gerne wissen, wie der Compiler (Javac oder andere Compiler, die Sie kennen) diese Situation verwaltet, nicht, wie man es vermeidet.
Ich frage, weil ich einen Precompiler schreibe und ich möchte diese Situation verwalten.
Also, wenn es kompiliert die zweite Datei der Compiler bereits weiß, was der erste ist? –
@Fabio - Jeder Durchlauf des Compilers verarbeitet alle Dateien, die die Informationen für den nächsten Durchlauf sammeln. – ChrisF