Я привел пример на 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 или любые другие компиляторы, которых вы знаете) управляет этой ситуацией, а не как его избежать.
Я спрашиваю, потому что я пишу прекомпилятор, и я хотел бы управлять этой ситуацией.