【发布时间】:2016-08-31 13:10:42
【问题描述】:
当一个标签放在goto语句下面时,编译器如何找到标签的地址进行跳转? C 编程是一种自上而下的方法,对吗? 如果标签在 goto 语句之上,那么标签的地址在到达 goto 语句时是已知的,这是可以理解的。任何人请解释..
【问题讨论】:
-
如何找到打开的右括号?编译器是多遍的,即使它是“自上而下”的。
-
它可以只存储零并记下它需要稍后填写正确的地址,然后当它看到标签时返回并填写地址。
-
您似乎正在尝试使 C 语义适应预先设想的模型(“自上而下”,无论对您意味着什么),而不是使您的模型适应 C 的实际语义。如果 C 自上而下会阻止
goto分支到源代码中稍后出现的标签,C 不是自上而下的。 -
因为编译器会两次遍历源代码。