【发布时间】:2020-05-01 19:26:45
【问题描述】:
我已经用 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 或您知道的任何其他编译器)如何管理这种情况,而不是如何避免这种情况。
我之所以问是因为我正在编写一个预编译器,并且我想处理这种情况。
【问题讨论】:
标签: compiler-construction circular-dependency