Я сделал пример на Java, но я думаю (не проверял), что он работает на других (всех?) Языках.
У вас есть 2 файла. Сначала M.java
:
public class MType {
XType x;
MType() {x = null;}
}
Второй, другой файл (в том же каталоге), XType.java
:
public class XType {
MType m;
public XType(MType m) {this.m = m;}
}
Хорошо, это плохое программирование, но если вы запускаете javac XType
, оно компилируется: компилируется даже MType
, потому что XType
нуждается в этом. Но ... MType
нужно XType
... как это работает? Как компилятор узнает, что происходит?
Я хотел бы знать, как компилятор (javac или любой другой известный вам компилятор) управляет этой ситуацией, а не как ее избежать.
Я спрашиваю, потому что я пишу прекомпилятор, и я хотел бы справиться с этой ситуацией.