1
3
允许或不允许向前引用的主要区别是使用 一次通过编译器 或者是多通的。当然,要处理前向引用,必须检查符号定义并进行类型检查。 后 生成了正在编译的源的完整抽象语法树。 所以没问题,当你第一次找到一个正向引用时,你只是依赖于它将在以后被定义(你可以在符号表中将其标记为挂起),然后当你找到实际的定义时,你将在符号表中细化符号对象。 之后,您可以对其进行类型检查,或者检查某些符号是否仍处于挂起状态(因此没有真正的定义,您可以引发语义错误)。 |
2
1
它通过两次编译来实现这一点。第一个过程解析代码并收集所有使用的标识符。第二遍解析所有标识符。 在具有单通道编译器的语言中,如pascal,只有向后引用才能用作标识符的类型,在解析标识符之前必须知道它的类型。 |
3
0
完全一样,C++处理它,我想,只是区别:语法很简单,编译器可以构造解析树,而不需要你告诉你你还未声明的符号所指的是什么样的语法对象。 |
Robert King · Unity C#语法问题-转换位置 1 年前 |
JBryanB · 如何从基本抽象类访问类属性 1 年前 |
law · 检查答案按钮的输入字符串格式不正确 2 年前 |
i_sniff_ket · 在unity之外使用unity类 2 年前 |